【发布时间】:2018-05-12 00:23:24
【问题描述】:
所以我有这个 MEAN-stack 应用程序,在后端,我有两种方法来创建新用户:通过 google 身份验证和通过用户名。
现在,我正在编写通过用户名创建新用户的代码,但我无法从我的 node.js 文件中的另一个函数返回值(在本例中为 createNewUser() )。当我查看我的数据库时,新用户已创建,但从 createNewUser() 返回的值未定义。
我首先认为这是由于异步性造成的问题,所以我尝试了 setTimeout()。然而,该函数仍然返回 undefined。有人知道为什么吗?
这是我的 node.js 后端中的路由:两个 console.logs 返回 undefined
router.post('/signup', function(req, res){
var result = createNewUser(req.body);
console.log('result 1', result);
setTimeout(function(){
console.log('result2', result);
if (!result.success){
res.status(500).json({
message: "unable to create User",
obj: result.err
})
} else {
res.status(200).json({
message: "successfully created new user",
obj: result.obj
})
}
}, 6000);
});
这是同一个文件中的createNewUser()函数,console.log返回的是用户,所以实际上是创建了用户,只是函数没有返回值。:
function createNewUser(userData, socialRegistry){
var user;
if (socialRegistry){
user = new User({
firstName: userData.firstName,
lastName: userData.lastName,
email: userData.body.email,
googleID: userData.body.provider.ID
});
} else {
user = new User({
firstName: userData.firstName,
lastName: userData.lastName,
username: userData.username,
password: bcrypt.hashSync(userData.password, 10),
email: userData.email,
registerDate: new Date()
});
}
user.save(function(err, user) {
if (err) {
return {
success: false,
err: err
}
}
if (socialRegistry){
return user
} else {
console.log(user);
var test = {
success: true,
obj: user
}
return test
}
});
}
【问题讨论】:
标签: javascript node.js mongoose