我试图迭代结果数组变量。
我能够在函数内部获取数组值,但是当我尝试将其记录到外部时,它显示为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 } ]
答案 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