如何将Promise变量保存到局部变量

时间:2019-05-19 21:24:33

标签: javascript node.js

我正在尝试将成功保存的monogodb用户的数据复制到本地变量,但不成功。

我初始化了一个称为regiseredUser的变量,并在.save()的promise函数上。然后(// promise)我试图将返回的数据保存到regiseredUser regiseredUser = user;中,但是当我console.log(regiseredUser)我清空对象

 let regiseredUser = {}
  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      return res.status(400).json({ email: "Email already exists" });
    } else {
      const newUser = new User({
        name: req.body.name,
        email: req.body.email,
        password: req.body.password,
        verified: req.body.verified,
      });
      newUser.verified = false;

      // Hash password before saving in database
      bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(newUser.password, salt, (err, hash) => {
          if (err) throw err;
          newUser.password = hash;
          newUser
            .save()
            .then((user) => {
              regiseredUser = user;

              res.json(user)}

              )
            .catch(err => console.log(err));
        });
      });
      console.log(regiseredUser)

我希望将用户复制到regiseredUser,但是没有发生

1 个答案:

答案 0 :(得分:0)

这是不可能的。因为promise正在等待操作完成,所以promise之后的其余代码将在promise中的实际代码之前执行。相反,您必须处理上一个promise中的所有内容,或者让一个函数处理所有内容,然后调用回调函数。

有关承诺如何运作的更多信息,请查看MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise