Je suis débutant dans le développement de meanstack. J'essaye de pousser la valeur à l'intérieur d'un tableau dans la boucle de foreach mais le dernier j'obtiens le tableau vide.node js Array.push() ne fonctionne pas avec mongo
Mon code:
router.get("/", function(req, res) {
ourpackage.find({}).sort({_id:1}).exec(function(err,resdoc){
var rest = [];
resdoc.forEach(function(doc){
masterRoomimage.find({ourpackageId:doc._id},function(err,ourpackageimagevalue){
if(err) res.send(err);
var ourpackagedetail = JSON.parse(JSON.stringify(doc));
var stringifyimages = JSON.parse(JSON.stringify(ourpackageimagevalue));
var ourpackage = _.merge({},ourpackagedetail,{masterRoomimages:stringifyimages});
rest.push(ourpackageimagevalue);
//print all rest array value
console.log(rest);
});
});
//print empty rest array value
console.log(rest);
res.send(rest);
});
});
ourpackage Schéma
{
"_id": "58e396d4215bc61338d2c06e",
"first_title": "test 1",
"berief_text": "<p>testing </p>",
}
ourpackagesimages Schéma
[
{
"_id": "59424d49fcc8100050916bf4",
"imageLocation": "first.jpg",
"ourpackageId": "58e396d4215bc61338d2c06e",
"__v": 0
},
{
"_id": "59424d49fcc8100050916bf5",
"imageLocation": "third.jpg",
"ourpackageId": "58e396d4215bc61338d2c077",
"__v": 0
},
{
"_id": "59490ad44e26c13324906433",
"imageLocation": "second.jpg",
"ourpackageId": "58e396d4215bc61338d2c06e",
"__v": 0
}
]
résultat attendu
[
{
"_id": "58e396d4215bc61338d2c06e",
"first_title": "test 1",
"berief_text": "<p>testing </p>",
"ourpackagesimages": [
{
"_id": "59424d49fcc8100050916bf4",
"imageLocation": "first.jpg",
"ourpackageId": "58e396d4215bc61338d2c06e",
"__v": 0
},
{
"_id": "59490ad44e26c13324906433",
"imageLocation": "second.jpg",
"ourpackageId": "58e396d4215bc61338d2c06e",
"__v": 0
}
]
}
]
sortie obtenue vide
[]
Attention: 'forEach' est synchrone alors que' find' est asynchrone. Je pense que l'utilisation de 'aggregate' comme indiqué dans cette [réponse] (https://stackoverflow.com/a/41744323/1022914) pourrait être utile pour vous. – Mikey