尽管有记录,Mongoose findById回调返回null

时间:2020-08-13 13:00:59

标签: javascript node.js mongodb mongoose

我对此感到困惑。如果记录存在,则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);

1 个答案:

答案 0 :(得分:0)

搜索了几个小时之后,好吧...这对我来说很愚蠢。 我没有在mongoose.model中提供第三个参数。

更改:

module.exports = mongoose.model("Article", articleSchema);

收件人

module.exports = mongoose.model("Article", articleSchema, "Article");

我发现mongoose.prototype.model如果没有集合名称,则会在模型名称的末尾自动添加一个“ s”,这意味着Article集合将被命名为{{1 }}