[英]Node.js Express and Mongoose, rendering after a save()
我刚刚通过创建一个简单的博客网站开始尝试使用Node.js Express和Mongoose。
我正在尝试构建一些将执行一些简单的数据库操作的路由,但是我对异步函数以及我的代码是否每次都能正确执行感到困惑。
这基本上是我所拥有的:
app.get('/createUser', function(req, resp) {
var newUser = new User({name: 'abc123', pass: 'password321'});
newUser.save(function(err){ // will this callback always be called correctly?
if(err) resp.send('ERROR!');
resp.send('SUCCESS!');
});
});
因此,我希望响应写为“ ERROR!”。 保存中的任何错误,以及“成功!” 保存成功时。 但是,我对这些功能的时间感到困惑。 get()函数会在save()完成之前返回吗? 如果是这样,答复是否会被正确写出?
get()函数将在save函数执行之前完成 ,但是由于在执行save回调之前没有编写响应的内容,因此直到那时浏览器都无法使用该响应。
我在代码中添加了一些console.log()调用,以便您可以看到执行顺序:
app.get('/createUser', function(req, resp) {
console.log('this will print first');
var newUser = new User({name: 'abc123', pass: 'password321'});
newUser.save(function(err){ // will this callback always be called correctly?
console.log('this will print last');
if(err) {
resp.send('ERROR!');
}
else {
resp.send('SUCCESS!');
}
});
console.log('this will print second');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.