为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我得到 [object object ] 而不是 JSON?

为什么我得到 [object object ] 而不是 JSON?

摇曳的蔷薇 2021-11-25 15:19:53
我正在制作一个 API。当我发送正确的登录数据时,我得到 JSON 但当我发送不正确的数据时,我得到这个 [object object] 消息,为什么?当提供正确的信息时。这是我的代码。router.route('/login').post(function (req, res, next) {    console.log('i should be here when path match to login', req.body);    UserModel.findOne({        username: req.body.username,      })      .exec(function (err, user) {        if (err) {          return next(err);        }        if (user) {          var passwordMatch = passwordHash.verify(req.body.password, user.password);          if (passwordMatch) {            var token = generateToken(user);            res.status(200).json({              user: user,              token: token            });          } else {            next({              message: "password didnot match",              status: 400            })          }        } else {          next({            message: 'Invalid Username',            status: 400          })        }      });  });
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您可以在不使用 next 的情况下执行此操作。试试这个代码,它会立即工作!


router.route('/login').post(function (req, res, next) {

        console.log('i should be here when path match to login', req.body);


        UserModel.findOne({

            username: req.body.username,

          })

          .exec(function (err, user) {

            if (err) {

              console.log(err);

              res.status(500).json({message:'Backend error'})

            }

            if (user) {

              var passwordMatch = passwordHash.verify(req.body.password, user.password);

              if (passwordMatch) {

                var token = generateToken(user);

                res.status(200).json({

                  user: user,

                  token: token,

                  message:'Login successful'

                });

              } else {

                res.status(400).json({message:'Wrong password'})

              }

            } else {

              res.status(400).json({message:'User does not exist'})

            }

          });

      });


查看完整回答
反对 回复 2021-11-25
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

该值[Object object]与您发送的数据无关。这与您打印值的方式有关。


[Object object]表示您收到了一个对象。类型的值通常当你要么concatinate返回object用string。


例子:


var obj = {a: 1};

console.log('Printing ' + obj); // Prints [object object]


因此,您无需连接 ,而是object可以stringify将对象打印出来。


例子


var obj = {a: 1};

console.log('Printing ' + JSON.stringify(obj)); // Prints {"a":1}


或者


var obj = {a: 1};

console.log('Printing ', obj); // Prints formatted {"a":1}


查看完整回答
反对 回复 2021-11-25
?
侃侃无极

TA贡献2051条经验 获得超10个赞

res.status(200).json({

              user: user,

              token: token

            });

这就是您发送成功的方式。您正在将响应格式化为 JSON。但是在失败时,您将返回普通的 JS 对象。将失败响应格式化为 JSON 对象将解决您的问题。


查看完整回答
反对 回复 2021-11-25
  • 3 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号