Я отправляю комментарий в / arms /: id / comments, как показано ниже, но всегда получая ошибку, не могу прочитать свойство push undefined
router.post("/", middleware.isLoggedIn, function(req, res) {
arms.findById(req.params.id, function(err, armsFound) {
if (err) {
console.log(err);
res.redirect("back");
} else {
comments.create(req.body.comment, function(err, comment) {
if (err) {
console.log(err);
res.redirect("back");
} else {
comment.author.id = req.user._id;
comment.author.username = req.user.username;
comment.save();
arms.comments.push(comment);
arms.save();
req.flash("success", "Successfully added comment");
res.redirect("/arms/" + arms._id);
}
});
}
});
});
Схема оружия В руках Схема комментариев представляет собой массив, и везде в Интернете, включая stackoverflow, я обнаружил, что если я что-то помещаю в массив, то все нормально, если это что-тоиначе тогда это даст ошибку. Я также прочитал кое-что о stackoverflow, которое предложило мне использовать фактическое слово (от которого мне требуется схема комментариев) для нажатия, которое в моем случае - «комментарии», поэтому я написал «комментарии» вместо приведенного ниже кода, где написано «комментарий»но это тоже не сработало
const mongoose = require("mongoose");
const armSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
price: String,
image: String,
description: String,
owner: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String,
},
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}]
})
module.exports = mongoose.model("arms", armSchema);
Схема комментариев
const mongoose = require("mongoose");
const commentSchema = new mongoose.Schema({
text: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
}
})
module.exports = mongoose.model("Comment", commentSchema);