我正在尝试将成功保存的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,但是没有发生
答案 0 :(得分:0)
这是不可能的。因为promise正在等待操作完成,所以promise之后的其余代码将在promise中的实际代码之前执行。相反,您必须处理上一个promise中的所有内容,或者让一个函数处理所有内容,然后调用回调函数。
有关承诺如何运作的更多信息,请查看MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise