У меня есть база данных outfits
, в которой каждый комплект представляет собой массив уникальных идентификаторов.У меня также есть отдельная база данных предметов, каждый из которых имеет уникальный идентификатор.
Я пытаюсь взять набор массивов из outfits
и получить подробную информацию о соответствующих предметах.
Я написал функцию для поиска элементов по идентификатору и отправки их во внешний интерфейс, но я не могу поддерживать структуру массива в ответе.
exports.outfitRendered = (req, res) => {
var outfits = [["5c25109c07c4dd627126a1a6", "5c25109c07c4dd627126a1a6"], ["5c25109c07c4dd543126a1a6"]];
// CREATE SOME EMPTY ARRAYS
var newArray = []
var outerArray = []
// LOOK UP THE ITEMS IN THE OUTFIT FROM USER DB
function lookup(outfitId) {
return new Promise(function (resolve, reject) {
for (y of outfitId) {
//console.log(y);
User.aggregate([
{ $match: { '_id': mongoose.Types.ObjectId(req.user.id) } },
{ $unwind: '$wardrobe.items' },
{ $match: { 'wardrobe.items._id': y } },
{ $project: { 'wardrobe.items': 1, '_id': 0 } }
]).then(function (res) {
newArray.push(res)
}).then(function (resp) {
resolve(this.newArray);
});
}
});
}
// PUSH ITEMS INTO NEW ARRAY
function build(array) {
return new Promise(function (resolve, reject) {
for (x of array) {
console.log(x);
lookup(x)
.then(function () {
outerArray.push(newArray);
console.log('incoming')
resolve(this.outerArray);
})
}
});
}
// SEND TO FRONTEND
var ready = build(outfits)
.then(function () {
res.json(outerArray);
});
}
Этот код отправляет первыйзначение в var outfits
для внешнего интерфейса, и это выглядит хорошо.Но я не могу понять, как получить такую же структуру массива в результате.
Это должно выглядеть так
Оригинал: outfits
:
[["5c25109c07c4dd627126a1a6", "5c25109c07c4dd627126a1a6"], ["5c25109c07c4dd543126a1a6"]]
Результат: outerArray
:
[["Red shirt", "Black pants"], ["Blue jeans"]]