我从数据库中获取一些数据,当我得到那些数据时,我只想发送一些属性而不是整行。所以对于它我使用了来自underscoreJS的方法'pick'。但问题是,当我应用此方法并将对象传递给响应(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();
});