首页 > 解决方案 > 在 mongo db 文档模式中返回承诺

问题描述

我有以下问题:无法读取未定义的属性“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 插入评论。我在链接 Promises 时错过了某些东西,但不知道是什么。有任何想法吗 ?

标签: javascriptmongodbes6-promise

解决方案


你没有返回 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();
    })
};

推荐阅读