ExpressJS变量未定义

时间:2018-04-22 21:52:25

标签: javascript node.js express

我有一个ExpressJS应用,当用户向路由发出POST请求时,它应该使用req.params.formId

在MongoDB中查找ID

我有一些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

的字段

1 个答案:

答案 0 :(得分:0)

正确的方法是提供您想要获取的字段作为第二个参数:

Form.findById(req.params.formId, 'recipient', (err, form) => {

   if (err) {
     // error handling code
   } else {
     const formRecipient = form.recipient;
   }
   ...
});

这里是 Docs