我需要在同一个渲染文件(show.hbs)中显示Invitation
和Comments
我在这里有这个代码,它工作正常,除了我无法实现那个评论也会显示。我真的很感激任何帮助。
我没有收到此代码的任何错误。
app.get('/invitation/:id', (req, res) => {
let id = req.params.id;
if(!ObjectID.isValid(id)){
return res.status(404).send();
}
Comment.find({inviteId: id}).then((comment) => {
if(!comment){
return res.status(404).send();
}
res.render('show.hbs', {comment});
}, (e) => {
res.status(404).send();
});
Invitation.findById(id).then((invitation) => {
if(!invitation){
return res.status(404).send();
}
res.render('show.hbs', {invitation});
}, (e) => {
res.status(404).send();
});
}, (e) => {
console.log('Unable to find invitation', e);
});
答案 0 :(得分:1)
你可以这样做,
Invitation.findById(id).then((invitation) => {
if (!invitation) {
return res.status(404).send();
}
Comment.find({ inviteId: id }).then((comment) => {
if (!comment) {
return res.status(404).send();
}
res.render('show.hbs', { comment, invitation});
}, (e) => {
res.status(404).send();
});
}, (e) => {
res.status(404).send();
});
并使用邀请和评论进行渲染
答案 1 :(得分:1)
Tnx to @ vibhor1997a但这更漂亮
try {
let invitation = await Invitation.findById(id).then((invitation) => {
if (!invitation) {
return res.status(404).send();
}
let comments = await Comment.find({ inviteId: id })
if (!comments) {
return res.status(404).send();
}
return res.render('show.hbs', { comments, invitation});
} catch (e) {
return res.status(500).send();
}
答案 2 :(得分:0)
您没有粘贴错误消息,但我很确定它类似于Error: Can't set headers after they are sent to the client
。
只需嵌套查询或使用await
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await。