对象值未定义:MEAN堆栈

时间:2018-07-11 11:34:24

标签: javascript typescript express mean-stack

这是我的代码

//to check whether email exist or not
router.post('/forgot', function(req,res) {
  User.find({email: req.body.email}, function(err,found) {
    console.log('finding email');
    if(found.length) {
      //console.log(found);
      resets(found);
       return res.json({success: true, msg: 'User found'});
      //return res.json(found);
    }
    else if(err) {
      return res.json({success: false, msg: 'User not found'});
    }
    else if(!found) {
      return res.json({success: false, msg: 'User not found'});
    }
  });
});

function resets(foundData) {
  console.log(foundData.email);
  var mailObj = foundData.email;
  console.log(mailObj);
}

在我的控制台中,我得到的输出为

  

未定义电子邮件   未定义

但是当我尝试仅显示foundData对象时,我在控制台中得到的输出为

finding email
[ { _id: 5b3ca69ba87aa42414993682,
    name: 'xxxxx',
    email: 'xxx',
    username: 'xxxxx',
    password: '$2a$10$ZLeRJvizxk62EOS/5mZT6evz7.mFbzf38K6pAzr69O/5I2EZ6WJWO',
    phone: '',
    location: '',
    title: '',
    company: '',
    education: '',
    __v: 0 } ]

这是上面输出的代码。

function resets(foundData) {
  console.log(foundData);
} 

我想要email对象中的变量foundData。我该如何解决?

1 个答案:

答案 0 :(得分:0)

那是因为您试图访问一个不存在的对象属性。 在记录的对象中,您有一个数组,在内部的对象中。这是因为MongoDB find方法会尝试查找符合条件的每个对象,如果只需要一个对象,则应使用findOne之类的东西。

尝试一下:

var mailObj = foundData[0].email;