节点Js forEach无法获得结果

时间:2018-01-30 07:37:17

标签: node.js foreach

我试图迭代结果数组变量。

我能够在函数内部获取数组值,但是当我尝试将其记录到外部时,它显示为null。

Wen我搜索了几篇文章,我看到forEach不推荐,建议是for循环,我甚至尝试过,我得到null结果。

cursor.forEach()...

中有什么问题
 router.get('/getlist', function(req, res, handleError) {
    client.connect('mongodb://localhost', function(err, client) {
        if (err) throw err;
        var db = client.db('angular-demo');
        var collection = db.collection("api_details");
        var query = {};
        var cursor = collection.find(query);
        var results = new Array();
        var results = cursor.forEach(
            function(result) {
                return result;

                console.log("insert")
                console.log(results);
            }
        );

        console.log("append")
        console.log(results); //results here shows null
    });
 });

记录结果:

append
[]

insert
[ { _id: 5a6867c8e54f6120709eabc5,
app_id: 'CaseRegistration',
description: 'API to register cases in the system',
cost_per_usage: '0.5',
__v: 0 } ]

insert
[ { _id: 5a6867c8e54f6120709eabc5,
app_id: 'CaseRegistration',
description: 'API to register cases in the system',
cost_per_usage: '0.5',
__v: 0 },
{ _id: 5a6867fde54f6120709eabc6,
app_id: 'CheckCreation',
description: 'CREs create the case with minimal data and assigns it to case initiation team to create checks',
cost_per_usage: '1',
__v: 0 } ]

2 个答案:

答案 0 :(得分:1)

如果您想从find获取结果,可以使用toArray

cursor.toArray(function (error, documents) {
    console.log(documents)
})
// or
cursor.toArray().then(function (documents) {
    console.log(documents)
})
// or in async function
const documnets = await cursor.toArray()

或者如果您需要转换它们,请使用map

答案 1 :(得分:0)

如果您在这种情况下使用object: Utility - Collection Manipulaiton action: Append rows to collection forEach循环,则无关紧要。 for变量未被填充,因为您尝试使用forEach的返回结果填充该变量,而{{3}}并未返回任何有用的内容。

您想要做的只是迭代结果,并在迭代时填充results数组。

更像这样:

results