在MEAN
堆栈中,我试图将从mongo db获得的记录存储在数组中,但我无法将记录存储在数组中。
这是我的代码,我试图将从projectimage获得的记录推送到fulldetails[]数组,但它失败了。向我建议将 mongo db 记录存储到数组的可能解决方案
var express = require("express"),
router = express.Router(),
project = require("../../models/project.js"),
projectimage = require("../../models/projectimages.js"),
var details=data;
var fulldetails=[];
for (var i = 0; i < details.length; i++) {
var prjct_id=details[i]._id;
console.log('below'+i);
fulldetails.push(details[i]);
projectimage.findOne({projectId: prjct_id}, function(err, data){
fulldetails.concat(data);
});
console.log(fulldetails);
return false;
}
我想你想要的是从你的 Mongo 集合中获取一个数组,如果我错了,请纠正我。
我还假设 Mongo 查询成功运行,并正确返回记录。 然后你可以使用 toArray
函数在回调中获取数组。
// let's say Furniture is your collection
let furniture = Furniture.find({});
let details = [];
furniture.toArray((err, array) => {
if (err) return;
details = array; // now details has your collections' documents
});
欲了解更多信息,请参阅此
让我知道这是否不是您要找的。
我认为您正在尝试获取完整细节的平面数组。如果我的假设是正确的,你可以在这里尝试我的解决方案:
var fulldetails=[];
for (var i = 0; i < details.length; i++) {
var prjct_id=details[i]._id;
projectimage.find({projectId: prjct_id}).toArray(function(err, data){ //convert data to array first
console.log(data);
fulldetails.concat(data); // concat data to fulldetails to get a flat array
});
}