Javascript res.json()给出了weired结果

Javascript res.json()给出了weired结果,javascript,json,node.js,rest,api,Javascript,Json,Node.js,Rest,Api,我正在从数据库中获取一些数据,当我获取这些数据时,我只想发送一些属性,而不是整行。因此,我使用了一个从下划线中选取的方法。但问题是,当我应用这个方法并将对象传递给response(res.status(200).json(obj.toJSON())时,我得到的不是这个对象,而是错误消息。 这是我的密码 这里是auth.js=>我正在应用'pick'方法并发送它 const bcrypt = require('bcryptjs'); const db = require('./db.js'); c

我正在从数据库中获取一些数据,当我获取这些数据时,我只想发送一些属性,而不是整行。因此,我使用了一个从下划线中选取的方法。但问题是,当我应用这个方法并将对象传递给response(res.status(200).json(obj.toJSON())时,我得到的不是这个对象,而是错误消息。 这是我的密码

这里是auth.js=>我正在应用'pick'方法并发送它

const bcrypt = require('bcryptjs');
const db = require('./db.js');
const _ = require('underscore');

    module.exports = function(body) {
      return new Promise((resolve, reject) => {
        db.users.findOne({where: { email: body.email}}).then((user) => {
          if (bcrypt.compareSync(body.password, user.get('hashed_password'))) {
            let publicDetails = user.toJSON();
            publicDetails = _.pick(publicDetails, 'id', 'email');
            resolve(publicDetails);
          } else {
            reject();
          }
        }).catch(() => {
          reject();
        });
      });
    }
在这里,在这个文件中,我称之为承诺

 app.post('/users/login', (req, res) => {
      const body = _.pick(req.body, 'email', 'password');

      auth(body).then((user) => {
        res.status(200).json(user.toJSON());
      }).catch(()=>{
        res.status(401).send();
});

避免“我收到了错误消息”-哪条错误消息?比如如果它找到了值,仍然给出了状态401,如果在auth.js中我使用了“user”而不是“publicDetails”,它工作正常。啊,我现在明白了。您正在调用
.toJSON()
两次,一次在auth.js中,一次在主文件中。这当然会引发一个异常,因为普通对象没有任何这样的方法。您应该为捕获的异常设置日志记录,错误消息很明显!