我正在尝试执行以下代码:
UserSchema.methods.generateAuthToken = function () {
const user = this;
const access = 'auth';
const token = jwt.sign({_id: user._id.toHexString(), access}, 'abc123');
user.tokens.push({access, token});
user.save().then(() => {
return token;
});
};
在我的快递文件中,我有以下代码:
app.post('/users', (req, res) => {
const body = _.pick(req.body, ['email', 'password']);
const user = new User(body);
user.save().then(() => {
return user.generateAuthToken();
}).then((token) => {
res.header('x-auth', token).send(user);
}).catch((err) => {
console.log(err);
res.status(400).send(err);
});
});
问题在于,第一个文件中的user.save().then()
调用返回的令牌从未到达明确代码user.generateAuthToken()
。是什么原因,我应该如何解决?
答案 0 :(得分:0)
generateAuthToken
没有return
语句。
如果您想返回then
返回的承诺,则必须明确地这样做。
答案 1 :(得分:0)
您需要将架构更新为以下内容:
UserSchema.methods.generateAuthToken = function () {
const user = this;
const access = 'auth';
const token = jwt.sign({_id: user._id.toHexString(), access}, 'abc123');
user.tokens.push({access, token});
user.save().then(() => {
return token;
});
};
generateAuthToken不会在您的代码中返回Promise