К предисловию: я относительно новичок в работе с mongoose / express.
Я пытаюсь создать приложение, в котором в схеме мангуста под названием «Пробел» есть массив под названием «сообщения». Содержимое массива - это ссылки ObjectId на другую схему мангуста, называемую «Post». Однако каждый раз, когда я делаю GET-запрос к маршруту, который должен отправить обратно мое пространство и сообщения в нем, я получаю неприятную ошибку. Кроме того, мои сообщения не заполняют мое пространство.
Ошибка: CastError: сбой при преобразовании в ObjectId для значения «undefined» в пути «_id» для модели «Space»
Вот мои маршруты:
ПОЛУЧАТЬ
app.get('/spaces/:id', (req,res) => {
Space.findById(req.params.id).populate('posts').exec((err, space) => {
if (err){
console.info(err);
} else {
res.send(space);
}
});
});
ПОЧТА
app.post('/spaces/:id/posts', (req,res) => {
Space.findById(req.params.id, (err, space) => {
if (err){
console.info(err);
res.redirect('/spaces/:id');
} else {
Post.create(req.body, (err, newPost) => {
if (err){
console.info(err);
} else {
newPost.save();
space.posts.push(newPost._id);
res.redirect('/spaces/:id');
}
});
}
});
});
Вот мои схемы:
Схема публикации:
const mongoose = require('mongoose');
let postSchema = new mongoose.Schema ({ название: Строка, описание: Строка });
module.exports = mongoose.model ("Сообщение", postSchema);
Схема пространства:
const mongoose = require('mongoose');
let spaceSchema = new mongoose.Schema ({ название: Строка, описание: строка, сообщений: [ { тип: mongoose.Schema.Types.ObjectId, ref: "Сообщение" } ] });
module.exports = mongoose.model ('Пробел', spaceSchema);
Привет! Я просто попробовал, и получил "правда".
Похоже, req.params.id не определен. Сделайте console.info (req.params.id)
Я получил строку для req.params.id. Вроде бы определился.





Перед вызовом метода findById
req.params.idпроверьте, является лиconsole.info(mongoose.isValidObjectId(req.params.id))допустимым ObjecId.