在Mongo DB文档架构中返回Promise

时间:2018-11-20 11:53:52

标签: javascript mongodb es6-promise

我有以下问题:无法读取未定义的属性“ then”。 这是我的代码:

commentSchema.methods.saveIfMovieExist = function () {
const Comment = this;
Movie.findOne({imdbID: Comment.imdbID}).then(movie => {
    if (!movie)
        return Promise.reject();

    return Comment.save();
}, err => {
    return Promise.reject();
}); };

然后我有这个请求:

router.post('/', (req, res) => {
const comment = new Comment({
    imdbID: req.body.imdbID,
    text: req.body.text
});

comment.saveIfMovieExist(comment).then(doc => {
    res.send(doc);
}, err => {
    res.status(400).send(err);
});
});

我想检查具有imdbID的电影是否存在,如果存在,请向db插入注释。我在链接Promise中缺少某事,但无法弄清楚是什么。有任何想法吗 ?

1 个答案:

答案 0 :(得分:1)

您没有返回find函数,因此先返回该函数,然后再从中返回promise。

commentSchema.methods.saveIfMovieExist = function () {
    const Comment = this;
    return Movie.findOne({imdbID: Comment.imdbID}).then(movie => {
        if (!movie)
            return Promise.reject();

        return Comment.save();
    })
};