FindOne => save()组合不起作用

时间:2018-04-02 17:25:51

标签: javascript node.js mongodb express

我有这个功能:

router.route('/banner/:_id')
    .post((req, res, next) => {
        console.log('got here');
        var r = req.body;
        // console.log(r.message);
        // console.log(req.params._id);
        try {
            Banner.findOne({_id: req.params._id}, (e, doc) => {
                console.log(doc);
                if (e) console.log(e);
                doc.time = r.time;
                doc.date = r.date;
                doc.technicalIssue = r.technicalIssue;
                doc.message = r.message;
                doc.save(e => console.log(e));
            })
        }
        catch (e) {
            console.log(e);
        }
        res.redirect('/admin');
    });

当我发帖时我得到了这个:

POST /admin/banner/5ac1574c734d1d4f8af95a69 302 41.225 ms - 56
{ partnersLogos: [],
    _id: 5ac1574c734d1d4f8af95a69,
    date: '1 May',
    time: '1 - 5pm',
    technicalIssue: '',
    message: 'test2',
    __v: 1 }
null

所以我可以看到它找到了所需的文件。问题是它没有保存它。这可能是一些愚蠢的错误,但我无法在任何地方看到它。有什么想法吗?

我在mlab上使用Express和Mongoose。

我尝试模仿this回答,但出了点问题。

横幅模型:

var mongoose = require('mongoose');
var bannerSchema = new mongoose.Schema({
    technicalIssue: String,
    time: String,
    date: String,
    partnersLogos: [],
});
module.exports = mongoose.model('banner', bannerSchema);

1 个答案:

答案 0 :(得分:0)

我忘记在模型中添加message字段。