node.js嵌套async.eachSeries

阿尔伯特·普拉茨

我只是新加入节点,并以async.js结尾。我不确定我想做的事是否可行(猜测是可行的),或者我的工作方法是否正确(猜测并非可行)。这是东西:

这段代码是用来管理一些instagram数据的,所以我将根据代码实际需要做的事情来解释所有内容,以使其更加易懂。

  1. 连接到mongoDB,获取一些Instagram帐户ID(完成)

  2. 对于每个ID,我想获得las 10个帖子(我已经将其保存在数据库中)。

  3. 对于每个帐户的那10个项目,我需要获取(评论+喜欢)的总和,并将该值计入第一个eachSeries调用的out代码中。

    router.get('/users_all', function(req, res) {   
    
        User.find().sort({'counts.followed_by': 'descending'}).exec(function(err, users) { 
    
            async.eachSeries(users, function(item, outerCallback) { 
    
                Media.find({'userId': item.user_id}).exec(function(err, medias) {       
    
                    var count = 0;
    
                    async.eachSeries(medias, function(item, outerCallback2) {               
    
                        count += item.comments_count + item.likes_count;            
                    });     
    
                });
    
                item.totalAmount = count;
    
            }); 
    
            res.json(users);
    
        });
    
    }
    

我只是没有设置每个eachSeries中的回调调用,因为我不知道将它们放在哪里,而且我认为我的代码更容易理解。

如果需要有关代码的更多说明,请询问。谢谢你的帮助。

杰夫·拉乔伊

因此,您几乎就在那儿(至少使用回调)。

如果您在https://github.com/caolan/async上查看有关异步的文档,您会看到对的调用eachSeries也有回调,因此一旦完成该系列,您就可以执行一些操作。

内序列完成添加所有要计数的值后,看起来您的代码正在尝试完成。因此您的async.eachSeries调用最终将看起来像这样(加上一些我肯定会为您的mongo查询推荐的其他错误处理)。

router.get('/users_all', function(req, res) {
    User.find().sort({'counts.followed_by': 'descending'}).exec(function(err, users) {
        if (err) {
            res.status(500).json({code: 500, message: 'Internal server error'});
        } else {
            async.eachSeries(users, function (item, outerCallback) {
                Media.find({'userId': item.user_id}).exec(function (err, medias) {
                    if (err) {
                        outerCallback(err);
                    } else {
                        var count = 0;
                        async.eachSeries(medias, function (item, innerCallback) {
                            count += item.comments_count + item.likes_count;
                            innerCallback();
                        }, function () {
                            if (err) {
                                outerCallback(err);
                            } else {
                                item.totalAmount = count;
                                outerCallback();
                            }
                        });
                    }
                });
            }, function () {
                res.json(users);
            });
        }
    });
});

问题在于,看起来您实际上并没有将自己限制在最近的10个项目中,除非您已将它们保存在数据库中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

node.js中的async.eachSeries

来自分类Dev

嵌套节点async.eachSeries

来自分类Dev

node.js async.eachSeries调用最终回调为时过早

来自分类Dev

嵌套的async.eachSeries堆栈迭代

来自分类Dev

瀑布中的嵌套async.eachSeries执行顺序错误

来自分类Dev

async.each和async.eachSeries之间的区别

来自分类Dev

async.js:async.eachSeries结果总是抛出未定义

来自分类Dev

异步js的eachSeries中的缓冲区溢出

来自分类Dev

如何在函数内的async.eachSeries循环内从多个get请求返回响应

来自分类Dev

使用嵌套的async.forEachSeries和async.waterfall控制Lambda Node.js代码的排序

来自分类Dev

async.eachSeries仅在内部运行一次,每次迭代都带有async.waterfall

来自分类Dev

Node.JS中的ASYNC

来自分类Dev

Node.js Express嵌套资源

来自分类Dev

在Node.js中模拟嵌套模块?

来自分类Dev

Node.js表达嵌套路由

来自分类Dev

使用MySQL在Node JS中嵌套查询

来自分类Dev

Node.js嵌套本机模块安装

来自分类Dev

在Node.js中解析嵌套的JSON

来自分类Dev

Node JS从嵌套函数提取数据

来自分类Dev

Node JS嵌套函数和变量范围

来自分类Dev

Node.js表达嵌套路由

来自分类Dev

Node.js:独立读取嵌套json

来自分类Dev

在 Node.js 中索引嵌套的 JSON

来自分类Dev

了解Node.JS async.parallel

来自分类Dev

Node.js中的async / await替换

来自分类Dev

.net中的Node.js与Async / await

来自分类Dev

Node.js:async.map变慢

来自分类Dev

Node JS Async Promise。所有问题

来自分类Dev

Node.js中的async / await替换