如何找到与隐藏输入中发布的ID匹配的文档?
这是我的架构:
var MessageSchema = Schema({
name: {type: String, required: true},
message: {type: String, required: true},
replies: [{ type: Schema.Types.ObjectId, ref: 'Comment' }]
}, {timestamps: true});
这是我的表格:
<% for(var i=0; i<messages.length; i++) { %>
<form action="/comment/create" method="post">
<label>Name: </label>
<input type="name" name="name">
<label>Comment: </label>
<input type="text" name="comment">
<input type="hidden" name="replyTo" value=<%= messages[i]['_id']%> >
<button>Reply</button>
</form>
<% } %>
我的邮寄路线很乱,所以在这一点上我只想知道如何找到该消息。
app.post('/comment/create', function(req, res) {
console.log(req.body.replyTo);
var message = Message.find({ _id: req.body.replyTo });
console.log(message);
res.redirect('/');
})
console.log(req.body.replyTo)返回id 59022ff22951ce73ed9bb773。
console.log(message)返回undefined。
答案 0 :(得分:0)
对Messages.find
的调用是异步的,因此在将结果赋给变量message
时不会提供正确的值。您需要使用回调或Promise处理此问题:
作为回调
Message.find({ _id: req.body.replyTo }, (err, res) => {
console.log(res); // message
});
作为承诺
Message.find({ _id: req.body.replyTo })
.then((res) => {
console.log(res); // message
})
.catch((err) => {
// ...
});