#mongodb #express #mongoose #objectid
#mongodb #выразить #mongoose #objectid
Вопрос:
У меня есть эта схема:
const fieldSchema = new mongoose.Schema
(
{
...
reserved_hours:
[
{
start: Date,
end: Date
}
],
...
}
);
и эта конечная точка
router.get("/filter-by-date", async (req, res) => {
let field_list = [];
try {
field_list = await Field.find({
reserved_hours : {
$elemMatch : {
start: {
$gte: req.query.datetime
}
}
}
});
res.status(200).json(field_list);
} catch (err) {
res.status(500).json({msg: err});
}
});
Когда я пытаюсь связаться с ним с помощью
http://localhost:3005/field/filter-by-date?datetime=2021-01-21T11:11:16.347 01:00
Я получаю
"msg": "Cast to ObjectId failed for value "filter-by-date" at path "_id" for model "Field""
Я предполагаю, что это ошибка filter-by-date
_id
, но я буквально понятия не имею, почему он это делает.
Заранее спасибо!
Ответ №1:
Я понял это сам. Все, что мне нужно было сделать, это переместить всю функцию выше этого
router.get("/:id", getField, (req, res) => {
res.json(res.field);
});
Я думаю, как только mongoose распознает путь, который ожидает _id
, что он также отображает каждый путь под ним _id
. Буквально не знаю, как и почему это происходит.