Я знаю, в чем проблема, но не могу понять, почему это происходит. У меня есть простое приложение рецепт, используя express и пн goose. Пользователь передает информацию о рецепте через форму и сохраняется в базе данных с помощью методов mon goose. Эта часть, кажется, работает отлично, и когда я console.log использую тестовые данные, я вижу, что следующие данные сохраняются:
{
ingredients: [ 'peanut butter', 'jelly', 'bread' ],
_id: 5e47d564f775ce247052d01c,
name: 'pb jelly sammich',
author: 'rob',
oneLiner: 'classic pb jelly sammich',
image: 'picofpbsammich here',
method: 'add all the ingredients together and boom! pb jelly sammich.',
__v: 0
}
(Это также то, что показывает, когда я проверяю mon go db с использованием db .recipes.find (), а также то, что отображается, когда я передаю объект в мой шаблон показа e js.
Однако, когда я получаю доступ к своему маршруту показа через запрос get, я получаю длинное сообщение об ошибке, используя приведенные выше тестовые данные. Вот они ключевая часть сообщения об ошибке:
'Cast to ObjectId failed for value "picofpbsammich here" at path "_id" for model "Recipes"',
Я понимаю, в чем проблема, но сбит с толку относительно того, почему это происходит. Вот мой маршрут показа:
app.get("/recipes/:id", function (req, res) {
console.log(req.params.id)
Recipe.findById(req.params.id, function (err, foundRecipe) {
if (err) {
console.log(err);
} else {
res.render("show", { recipe: foundRecipe });
}
})
})
консоль, регистрирующая req.params.id, как показано выше, печатает следующее:
5e47d564f775ce247052d01c
picofpbsammich here
Первая строка - это правильный идентификатор, вторая, очевидно, нет и причина проблемы, но я понятия не имею, откуда это может исходить: S Почему бы req.params.id вытягивал VALUE свойства, имя которого было бы совершенно другим?
Я новичок в mon goose, поэтому это, наверное, что-то глупое, я дой нг и любые объяснения приветствуются.
Вот модель:
var mongoose = require("mongoose");
let recipeSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
author: String,
oneLiner: String,
ingredients: [String],
image: String,
method: String
})
module.exports = mongoose.model("Recipes", recipeSchema)