koa问题,猫鼬等待不返回ctx.body

问题描述 投票:0回答:1

我正在使用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);
          }
        });
      }
    }
  });
});

node.js mongoose koa
1个回答
0
投票

最终转换为承诺。

  await user.save().then (doc =>{
    ctx.body = doc;
  });
© www.soinside.com 2019 - 2024. All rights reserved.