在Mongoose结果

时间:2018-02-22 14:34:39

标签: javascript express mongoose

我这样查询const result = await Form.findOne({ _id: req.params.id });
以下是我查询的结果:

{ _id: 5a8ea110d7371b7e5040d5c9,
  _user: 5a5c277f8d82ba3644b971c2,
  formDate: 2018-02-22T10:53:04.579Z,
  formElement: 
   { formName: 'Vanilla Form',
     pixel: '23423325',
     fieldRows: [ [Object], [Object] ] },
  formStyle: 
   { globalColor: [ [Object], [Object], [Object] ],
     elementSizing: 'medium',
     elementStyle: 'radius',
     fontFace: 'Open Sans',
     fontSize: { label: '15', button: '15' } },
  __v: 0,
  status: true }

我试图获得像console.log(result.formElement.pixel)这样的像素 但是,当我试图获取像素的值时,它会返回undefined 怎么了?

更新
这是我的代码:

app.get("/view/:id", async (req, res) => {
    const result = await Form.findOne({ _id: req.params.id });
    console.log(result);
    console.log(result.formDate); //return 2018-02-22T10:53:04.579Z,
    console.log(result.formElement.pixel) //return undefined
    // res.render("form", {
    //  result
    // });
});

我尝试使用Promise而不使用async来编辑我的代码,但它也返回undefined

2 个答案:

答案 0 :(得分:2)

你需要在这里进行一些挖掘。添加一些console.log来调试实际发生的事情。对于初学者,我建议打印结果以查看其实际情况。我的第一个猜测是你在await结束之前尝试打印结果?我不确定,因为我不确切地知道你何时在没有看到你的代码的情况下打印任何东西。

答案 1 :(得分:2)

你需要使用 exec()函数,它会返回promise。

=IFERROR(INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)),"")