我需要在同一个渲染文件中显示Invitation
和Comments
(show.hbs)
我在这里有这个代码,它工作正常,除了我无法实现那个评论也会显示。我真的很感激任何帮助。
我没有收到任何关于此代码的错误。
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);
});
你可以这样做,
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();
});
并使用邀请和评论进行渲染
Tnx到@ 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();
}
你没有粘贴你的错误信息,但我很确定它就像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。