我有以下问题:无法读取未定义的属性“ 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中缺少某事,但无法弄清楚是什么。有任何想法吗 ?
答案 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();
})
};