繁体   English   中英

Node.js Express和Mongoose,在save()之后呈现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM