在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;
}
答案 0 :(得分:0)
我认为你想要的是从你的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
});
有关详情,请参阅this
如果这不是你想要的,请告诉我。
答案 1 :(得分:0)
我认为你正试图获得一整套完整细节。如果我的假设是正确的,你可以在这里尝试我的解决方案:
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
});
}