Вам необходимо создать sh объект, а не модель mon goose.
Также вам необходимо создать схему mon goose, используя mongoose.schema
const mongoose = require("mongoose");
const vocaSchema = new mongoose.Schema({
word: String,
type: String,
meaning: String,
sente: String,
semean: String,
sug: String
});
//const Voca = mongoose.model("Voca", vocaSchema);
const setVocaSchema = new mongoose.Schema({
lessonId: String,
vocaList: [vocaSchema]
});
const SetVoca = mongoose.model("SetVoca", setVocaSchema);
module.exports = SetVoca;
И в вашем посте маршрут:
app.post("/lesson/add-voca/:lessonID", (req, res) => {
const lessonID = req.params.lessonID;
const newVoca = {
word: req.body.addWord,
type: req.body.addType,
meaning: req.body.addMeaning,
sente: req.body.addStc,
semean: req.body.addStcm,
sug: req.body.addSggt
};
console.log(newVoca);
SetVoca.findOneAndUpdate(
{ lessonId: lessonID },
{ $push: { vocaList: newVoca } },
{ new: true },
(err, result) => {
if (!err) {
console.log(result);
res.redirect("/lesson/add-voca/" + lessonID);
} else {
console.log(err);
res.render("error");
}
}
);
});
Тест:
Допустим, у нас есть этот документ с пустым vocaList
массивом:
{
"_id": "5e61f34358a41b7ee0e6fa40",
"lessonId": "lesson1",
"vocaList": [],
"__v": 0
}
Когда мы отправляем POST-запрос с этим URL ../lesson/add-voca/lesson1
и с этим телом запроса:
"addWord": "word1",
"addType": "type1",
"addMeaning": "meaning",
"addStc": "sente",
"addStcm": "semean",
"addSggt": "sug"
}
Результат будет таким:
{
"_id" : ObjectId("5e61f34358a41b7ee0e6fa40"),
"lessonId" : "lesson1",
"vocaList" : [
{
"_id" : ObjectId("5e61f5900b73daa104e2ee75"),
"word" : "word1",
"type" : "type1",
"meaning" : "meaning",
"sente" : "sente",
"semean" : "semean",
"sug" : "sug"
}
],
"__v" : 0
}