【问题标题】:Object value is undefined : MEAN Stack对象值未定义:MEAN Stack
【发布时间】:2018-07-11 11:34:23
【问题描述】:

这是我的代码

//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);
} 

我想要来自foundData 对象的变量email。我该如何解决这个问题?

【问题讨论】:

    标签: javascript typescript express mean-stack


    【解决方案1】:

    那是因为您试图访问一个不存在的对象属性。 在您记录的对象中,您有一个数组,并且在里面有一个对象。那是因为MongoDB find 方法试图找到匹配条件的每个对象,如果你只想要一个对象,你应该使用类似findOne 的东西。

    试试这个:

    var mailObj = foundData[0].email;
    

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 2018-08-14
      • 2018-12-04
      相关资源
      最近更新 更多