我可以让 model.save() 有一个 return 值吗?
Can i get model.save() to have a return value?
我是节点的新手,我正在尝试通过 mongoose 将一些东西保存到 mongo。
如果保存有错误(例如,有一个用户使用当前名称),我想 return false。
问题是 console.logs 1:2:6:7:3:4:5 的顺序
有什么方法可以同步调用 adduser 吗?
module.exports.addUser = function(username,password){
console.log(1);
var newUser = User({
username:username,
password:password
});
console.log(2);
newUser.save(function(err,prod,numeffect){
if (err){
console.log(err);
}
if (numeffect === 1){
console.log(3);
console.log("num effect = "+numeffect);
}
console.log(4);
console.log(prod);
}).then(function(doc){console.log(5)});
console.log(6);
}
mongoose.addUser(req.body.username,req.body.password);
console.log(7);
你不应该不它们同步,否则你会阻塞整个节点线程。
相反,您应该做的是 return 承诺,或带有回调的简单函数。 (比如 mongoose saving one,注意 mongoose 两者都支持)
你可以return newUser.save()
然后你会 运行 喜欢 addUser.then()
。此外,您可以删除 module.exports = function()
并使用 callback
或 promise
执行 module.exports
您的功能。
NodeJs 是单线程进程,你不应该用同步调用阻塞它。
当您收到来自 mongodb 的响应时,您应该传递一个回调函数来执行任何操作。
当进入 NodeJs 时,这是从调用和块到回调的重要切换。
我是节点的新手,我正在尝试通过 mongoose 将一些东西保存到 mongo。 如果保存有错误(例如,有一个用户使用当前名称),我想 return false。 问题是 console.logs 1:2:6:7:3:4:5 的顺序 有什么方法可以同步调用 adduser 吗?
module.exports.addUser = function(username,password){
console.log(1);
var newUser = User({
username:username,
password:password
});
console.log(2);
newUser.save(function(err,prod,numeffect){
if (err){
console.log(err);
}
if (numeffect === 1){
console.log(3);
console.log("num effect = "+numeffect);
}
console.log(4);
console.log(prod);
}).then(function(doc){console.log(5)});
console.log(6);
}
mongoose.addUser(req.body.username,req.body.password);
console.log(7);
你不应该不它们同步,否则你会阻塞整个节点线程。
相反,您应该做的是 return 承诺,或带有回调的简单函数。 (比如 mongoose saving one,注意 mongoose 两者都支持)
你可以return newUser.save()
然后你会 运行 喜欢 addUser.then()
。此外,您可以删除 module.exports = function()
并使用 callback
或 promise
执行 module.exports
您的功能。
NodeJs 是单线程进程,你不应该用同步调用阻塞它。
当您收到来自 mongodb 的响应时,您应该传递一个回调函数来执行任何操作。
当进入 NodeJs 时,这是从调用和块到回调的重要切换。