Я пытался найти хорошее решение этой проблемы, которая у меня была, но я не смог ничего найти. По сути, я пытаюсь добавить цитаты в книжный блог, который я делаю, но у меня возникают проблемы с сохранением цитат в книгах.
Моя схема цитат выглядит следующим образом:
var quoteSchema = mongoose.Schema({
text: String,
pageNum: String
});
И моя схема книги выглядит следующим образом:
var bookSchema = new mongoose.Schema({
title: String,
image: String,
author: String,
yearWritten: String,
quotes: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Quote"
}
],
favorite: Boolean
});
Маршрут, который должен выполнять фактическое создание и сохранение цитаты в книге, выглядит следующим образом:
router.post("/", function(req, res) {
// Look up book using ID
Book.findById(req.params.id, function(err, book) {
if(err) {
console.log(err);
res.redirect("/books");
} else {
// Create new quote
Quote.create(req.body.quote, function(err, quote) {
if(err) {
console.log(err);
res.redirect("/books");
} else {
// Save quote
quote.save();
// Add new quote to book
book.quotes.push(quote);
// Save the book
console.log(book.quotes);
book.save(); // THIS IS THE ERROR!
// console.log(quote);
// console.log(book);
// Redirect to book show page
res.redirect("/books/" + book._id);
}
});
}
});
});
Я получаю сообщение об ошибке:
(node:5606) UnhandledPromiseRejectionWarning: ValidationError: Book validation failed: quotes: Cast to [undefined] failed for value "[{"_id":"5e8c
e6fc6ced1d075192ac21"}]" at path "quotes"
Я почти уверен, что это связано с сохранением книги, но я не совсем уверен, как это исправить. Это. Любая помощь приветствуется!