我有一个ExpressJS应用,当用户向路由发出POST
请求时,它应该使用req.params.formId
我有一些console.log语句用于调试,因此我可以看到正在返回的信息。
路由应该查找传递的ID,当它找到它时,使用req.body
数据以及MongoDB文档中的字段,但这似乎只是返回undefined
以下是路线的代码:
app.post("/api/v1/forms/:formId", (req, res) => {
const { name, email, message } = req.body;
console.log(req.body);
Form.findById(req.params.formId, Form.recipient, err => {
if (err) {
res.send(err);
} else {
const formRecipient = Form.recipient;
const newForm = {
name,
email,
message,
recipient: formRecipient
};
console.log(newForm);
const mailer = new Mailer(newForm, contactFormTemplate(newForm));
try {
mailer.send();
res.send(req.body);
} catch (err) {
res.send(err);
}
}
});
});
举个例子,如果我向localhost:5000/api/v1/forms/5ad90544883a6e34ec738c19
发出POST请求,newForm
的console.log显示{ name: ' Mr Tester',
email: 'person@example.com',
message: 'Hi there',
recipient: undefined }
表单Mongoose架构有一个名为recipient
答案 0 :(得分:0)
正确的方法是提供您想要获取的字段作为第二个参数:
Form.findById(req.params.formId, 'recipient', (err, form) => {
if (err) {
// error handling code
} else {
const formRecipient = form.recipient;
}
...
});
这里是 Docs