В моем узле Router у меня есть следующее:
router.get("/single-base/:id", (req, res) => {
Base.find({ _id: req.params.id })
.then(bases => {
let basefetches = [];
for (let base of bases) {
basefetches.push(BaseUser.find({ baseId: req.params.id }));
}
return Promise.all(basefetches).then(users =>
res.json(users.map(user => user.serialize()))
);
})
.catch(err => {
console.error(err);
res.status(500).json({ message: "Internal server error" });
});
});
при консольной регистрации return Promise.all(basefetches).then(users => console.log(users))
получаю:
[ [ { created: 2018-08-27T21:37:42.151Z,
_id: 5b846f268cb4481264298f82,
userId: 'tester2',
baseId: 5b81528e1314da25bc498085,
acceptedMembership: false,
isCreator: false,
__v: 0 } ] ]
У меня точно такой же метод в другом месте, и он возвращает только пустой массив (этот массив также должен быть пустым в начале).
Почему / когда / как это толкает массив в другой массив, как мне решить эту проблему, чтобы users.map
не выбрасывал:
TypeError: Cannot read property 'push' of undefined
at Base.find.then.bases
РЕДАКТИРОВАТЬ : Я считаю, что это связано с методом BaseUser.find({})
. При консольной регистрации: Promise.all(basefetches).then(users => console.log(users));
я получаю следующее:
{ created: 2018-08-25T12:43:02.640Z,
_id: 5b81528e1314da25bc498085,
creatorId: 5b7efd4db3036a13601ad8d7,
title: 'testBase1',
__v: 0 }
[ [ { created: 2018-08-27T21:37:42.151Z,
_id: 5b846f268cb4481264298f82,
userId: 'tester2',
baseId: 5b81528e1314da25bc498085,
acceptedMembership: false,
isCreator: false,
__v: 0 } ] ]
I