Nodejs / Q中的承诺链

时间:2017-04-26 00:55:10

标签: node.js promise q chaining

我有一个集合,其中一个Item可以是另一个父亲,同时又是另一个孩子(它有一个ItemCode和一个ParentCode,它是其父节点的ItemCode)。它可能有多个子节点。我想找到firstItemCode的所有子项。起初我发现每个ItemCode都等于第一个ItemCode,然后我再次为每个找到的孩子做。就这样:

var totals = [];
collection.find({'parentCode': firstItemCode.toString()}).then(function(d) {
        // console.log(d);
        d.forEach(function(u){
            totals.push({'itemCode': u['itemCode'], 'name':u['name'], 'name': u['price']});
            collection.find({'parentCode': u['itemCode'].toString()}).then(function(d1){
                d1.forEach(function(u1){
                    totals.push({'itemCode': u1['itemCode'], 'name':u1['name'], 'name': u1['price']});
                    collection.find({'parentCode': u1['itemCode'].toString()}).then(function(d2){
                        d2.forEach(function(u2){
                            totals.push({'itemCode': u2['itemCode'], 'name':u2['name'], 'name': u2['price']});
                            collection.find({'parentCode': u2['itemCode'].toString()}).then(function(d3){
                                console.log(totals);
                            });
                        });
                    });
                });
            });
        });

});

我想这样做,直到集合中没有更多项目,父代码等于最后一项' s代码

我尝试了this教程,但我感到困惑......我不知道如何使forEach适合链接。 任何人都可以帮助我在一个循环中这样做,所以我不必复制这100次?

0 个答案:

没有答案