我搞不懂这个。如果记录存在,则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);
找了几个小时,OK.。。我真傻。我还没有给出mongoose.model中的第三个参数。
更改:
module.exports = mongoose.model("Article", articleSchema);
至
module.exports = mongoose.model("Article", articleSchema, "Article");
我发现如果没有集合名称,mongoose.prototype.model将自动在模型名称的末尾添加一个“S”,这意味着article
集合将被命名为articles