我对此感到困惑。如果记录存在,则err
有效。相反,如果记录不存在,则err
无效。
但是,尽管记录存在于数据库中,article
始终为空。
router.get("/:id", function (req, res) {
Article.findById(req.params.id, function(err, article) {
if (err) {
res.send(`Error: ${err}`);
} else {
//Print out "null"
console.log(article);
//Error occur
Article.updateOne({_id: req.params.id}, {$set:{views: article.views + 1}});
res.render("showArticle", { article: article});
}
});
});
商品模型:
var mongoose = require("mongoose");
const articleSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
description: {
type: String,
required: false
},
content: {
type: String,
required: true
},
createdDate: {
type: Date,
default: Date.now
},
views: {
type: Number,
default: 0
}
});
module.exports = mongoose.model("Article", articleSchema);
答案 0 :(得分:0)
搜索了几个小时之后,好吧...这对我来说很愚蠢。 我没有在mongoose.model中提供第三个参数。
更改:
module.exports = mongoose.model("Article", articleSchema);
收件人
module.exports = mongoose.model("Article", articleSchema, "Article");
我发现mongoose.prototype.model如果没有集合名称,则会在模型名称的末尾自动添加一个“ s”,这意味着Article
集合将被命名为{{1 }}