Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点orm中是否有一种同步调用每个函数的方法?_Javascript_Node.js_Express_Node Orm2 - Fatal编程技术网

Javascript 在节点orm中是否有一种同步调用每个函数的方法?

Javascript 在节点orm中是否有一种同步调用每个函数的方法?,javascript,node.js,express,node-orm2,Javascript,Node.js,Express,Node Orm2,我对node-orm2的异步行为有问题。我有这样一个问题: req.models.posts .find(...) .order('-whatever') .each(doMagic) //Problem happens here .filter(function(post) { ... }) .get(callback); function doMagic(post, i) { post.getMagic(function(err, magic) {

我对node-orm2的异步行为有问题。我有这样一个问题:

req.models.posts
   .find(...)
   .order('-whatever')
   .each(doMagic) //Problem happens here
   .filter(function(post) { ... })
   .get(callback);

function doMagic(post, i) {

    post.getMagic(function(err, magic) {
        ...
    });     
};
我的问题是,由于
post.getMagic()
内部发生的事情是异步的,所以我的回调函数在
doMagic
完成之前执行。检查我验证了这是正常的行为,但由于这是一个express应用程序,我的服务器用错误的信息响应


我尝试使用调用
getMagic
synchronous,但没有成功。这可能是我遗漏的东西。有没有办法让
每个
函数都像同步
映射
函数一样工作?

更改代码以获取帖子,一旦有帖子,使用async.js对其进行迭代,完成后发送响应

比如:

var async = require('async');

req.models.posts
    .find(...)
    .order('-whatever')
    .each()
    .filter(function(post) {...
    })
    .get(function(posts) {

        //iterate over posts here
        async.eachSeries(posts, function(file, callback) {
            post.getMagic(function(err, magic) {

                //here comes the magic

                //and then callback to get next magic
                callback();

            });
        }, function(err) {

            //respond here

        });

    });

您是否尝试在doMagic()中回调?函数doMagic(post、i、回调)。。。然后在post.get之后调用它……从数据库中检索到的每个元素都会调用一次doMagic函数,因此这不起作用。然后更改代码以获取帖子,一旦您让它们使用async.js进行迭代,并多次发送responseThanks,@Molda,您就节省了一天:D如果您需要代表,回答这个问题,我很乐意接受