javascript - JavaScript 无法获取从 then() 调用返回到另一个 then() 调用的值
问题描述
我正在尝试执行此代码:
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()
。是什么原因,我应该如何解决?
解决方案
generateAuthToken
没有return
声明。
如果你想返回返回的承诺then
,那么你必须明确地这样做。
推荐阅读
- ada - 如何证明这个不变量?
- python - 熊猫如何复制具有不均匀列的数据框中的行,仅在特定列中存在数据并形成具有偶数列的新数据框?
- c++ - 如何访问作为我关注类的祖父母的基类成员?
- image - 在特征向量中应用 PCA 后,我们在数组中得到值错误。我该如何解决这个问题?
- python - 是否可以将 Tensorflow 2 模型与 Tensorflow 1 一起使用?
- reactjs - 从表中删除主题后,数据不会重新呈现
- iframe - 谷歌忽略索引外部嵌入式 iframe 结构化数据
- reactjs - 与其他图像叠加后如何保存图像?
- sql - 查询 date_time 字段的日期部分。yyyy-mm-dd
- weka - 错误消息:参数行尾,在 weka 中读取 token[EOL]