koa问题,猫鼬等待不返回ctx.body
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了koa问题,猫鼬等待不返回ctx.body相关的知识,希望对你有一定的参考价值。
我正在使用koa重置密码,想要使用.save来启动schema.pre('save')。
数据使用findOneAndUpdate返回,但是当我使用.save时不返回。
什么是使它通过await / asyncs正确返回.save文档的神奇组合?
r.post("/public/auth/resetpass", async (ctx, next) => {
const values = ctx.request.body;
const query = {
email: values.email,
resetPasswordToken: values.resetPasswordToken,
resetPasswordExpires: {
$gt: new Date(new Date())
}
};
const update = {
password: values.password,
resetPasswordToken: null,
resetPasswordExpires: null
};
// let userFound = null;
await User.findOne(query,async function(err, user) {
if (err) {
console.log("*** err");
next(err);
} else {
if (_.isEmpty(user)) {
ctx.status = 200;
ctx.body = {
error: true,
message: "token is incorrect or time has expired for password reset"
};
} else {
user.password = values.password;
await user.save(function(err, doc) {
if (err) {
console.log('***err saving');
next(err);
} else {
//console.log fires, but ctx body doesn't return
console.log ('***saved, writing poco');
ctx.body = userToPoco(doc);
}
});
}
}
});
});
答案
最终转换为承诺。
await user.save().then (doc =>{
ctx.body = doc;
});
以上是关于koa问题,猫鼬等待不返回ctx.body的主要内容,如果未能解决你的问题,请参考以下文章