Почему mongoose игнорирует "commentId" в массиве документ.comments?
У меня есть код:
const taskId: number = req.body.taskId;
const text: string = req.body.text;
const task = await db.tasks.findOneAndUpdate(
{ taskId },
{ $push: { comments: [{
commentId: await db.getId(`task.${taskId}.commentId`),
taskId,
// @ts-ignore
author: Number(req.session.userId),
text,
timestamp: Date.now()
}] } }
).catch(e => {
console.error(e);
return res.status(400).json({ errors: [{ msg: "UNKNOWN_ERROR" }] });
});
if (!task) return res.json({ errors: [{ location: "query", msg: "NOT_FOUND", param: "taskId" }] });
return res.json(task);
Но на ответе я получаю (скипнул ненужное):
{
...,
comments: [{
"timestamp": 1595833609905,
"_id": "5f1e7d09c1e15d4c8e0b71fa",
"taskId": 2,
"author": 435214391,
"text": "haha test comment"
}]
}
То есть, в комментарии нет "commentId", он просто undefined! Для проверки сделал лог:
console.log({
commentId: await db.getId(`task.${taskId}.commentId`),
taskId,
// @ts-ignore
author: Number(req.session.userId),
text,
timestamp: Date.now()
})
И тут всё ок.. Почему же "commentId" не сохраняется в массиве из документа?
Ответы (1 шт):
Автор решения: Nikita
→ Ссылка
Итак, это победа. Все дело оказалось в импортах:
import TaskResponseSchema from './TaskResponse';
import TaskCommentSchema from './TaskResponse';
Хотя должно быть так:
import TaskResponseSchema from './TaskResponse';
import TaskCommentSchema from './TaskComment';