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

wzr*_*zrd 0 javascript json node.js express

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

但是,当具有相同电子邮件的用户尝试注册“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 {
        ...
       ...
      ...
Run Code Online (Sandbox Code Playgroud)

Sar*_*aaz 5

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

if(errors) // This will evaluate to true always once the object is initialized
Run Code Online (Sandbox Code Playgroud)

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

您可以使用

if ( Object.keys(errors).length != 0 ) {
Run Code Online (Sandbox Code Playgroud)

检查错误对象是否为空