【发布时间】:2020-11-13 14:38:33
【问题描述】:
favoriteRouter
.route('/:dishId')
.post(cors.corsWithOptions, authenticate.verifyUser, (req, res, next) => {
Favorites.findOne({ user: req.user._id })
.then(
(favoriteList) => {
//***SECTION A START//***
if (favoriteList == null) {
Favorites.create({
user: req.user._id,
})
.then(
(favoriteList) => {
console.log('promise resolved');
},
(err) => {
console.log('promise error');
next(err);
}
)
.catch((err) => next(err));
}
//***SECTION A END//***
Favorites.findOne({ user: req.user._id })
.then((favoriteList) => {
//***SECTION B START//***
if (favoriteList != null) {
favoriteList.dishes.push(req.params.dishId);
favoriteList
.save()
.then(
(favoriteList_c) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(favoriteList_c);
},
(err) => {
next(err);
}
)
.catch((err) => {
next(err);
});
} else {
err = new Error(
'Something wrong with favorite list document of user ' +
req.user._id
);
err.status = 404;
return next(err);
}
//***SECTION B END//***
})
.catch((err) => next(err));
},
(err) => next(err)
)
.catch((err) => next(err));
});
如果用户在 /:dishId 上发帖,但该用户没有最喜欢的文档,则创建一个新文档 在第 A 部分(用代码标记)。该文档在打印承诺已解决时创建得很好。但是在 SECTION B 中执行 else 部分,这意味着没有找到新创建的文档。但是,如果用户再次尝试,则意味着在下一步中它可以找到该文档并在 SECTION B IF 块中更新。有什么我想念的吗。我是nodejs的初学者,请帮忙!
【问题讨论】:
-
A 部分中的文档是否被插入到数据库中?你检查了吗?
-
我没有检查。但我认为它会被插入,如果不是,那么它在下一次通话中的工作方式。
-
在 A 部分,将 Favorites.create 替换为 Favorites.insertOne 并检查
-
我认为猫鼬模型没有 insertOne 功能。