繁体   English   中英

为什么我的节点快递响应返回空?

[英]Why does my node express response returns empty?

建立一个注册系统,当表单中有错误时,我会收到正确的错误。

但是,当具有相同电子邮件的用户尝试注册“res.json({error: 'email exists'})”时,它会返回空的 {}。

我正在使用邮递员来测试响应。

响应为空的问题是什么?

router.post("/register", (req, res) => {
   const { name, email, password, password2 } = req.body;
   let errors = {};

   if (!name) {
    errors.name = "Name is required";
   }

   ...
   if (errors) {
      return res.json(errors);
   } else {
    User.findOne({ email: email }).then(user => {
      if (user) {
        return res.json({ email: "email already exists" });
      } else {
        ...
       ...
      ...

您使用错误的方式检查空对象,

if(errors) // This will evaluate to true always once the object is initialized

是的,因此作为响应返回空的错误对象 & 它根本不会检查电子邮件

您可以使用

if ( Object.keys(errors).length != 0 ) {

检查错误对象是否为空

实际上问题在你的 if 条件下,

您正在检查对象,不能直接( if(errors) )检查对象是否具有值。 它总是进入这个 if 条件。 如果您想正常工作,您必须检查是否包含任何键的对象。

您可以像这样使用 if 条件检查错误对象

if(Object.keys(errors).length > 0){
         res.json(errors);
}

可能是if (errors)返回包含 {} 的错误变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM