首页 > 解决方案 > 无法读取猫鼬中未定义的属性“用户名”

问题描述

我想访问循环user内的对象,但出现错误。for

User.find({resume :{$ne : null}}, (err,user)=>{
if(err) res.send('ther is some problem for updating resumes') ;
if(user){
    for(var i = 0 ; i < user.length ; i++){
        Like.count({for : user[i].username }, (err,count)=>{
            if(err) res.send('there is something wrong with counting likes');
            console.log('inside: ' + user[i].username);

        })
    }
}
})

用户.js

var mongoose = require('mongoose') ; 

var schema = mongoose.Schema({
username : {
    type : String,
    require : true
},
password : {
    type : String,
    require : true ,
},
resume : {
    type : String
},
date : {
    type : Date,
    default : Date.now()
}
})

module.exports= mongoose.model("user",schema) ; 

我无法弄清楚出了什么问题!

标签: node.jsmongoose

解决方案


试试这个:

User.find({ resume: { $ne: null } }, (err, users) => {
  if (err) res.send('there is some problem for updating resumes');
  //for debugging, temporarily log number of users found...
  console.log(`${users.length} were found with no resume!`);
  if (users.length > 0) {
    users.forEach((user) => {
      Like.count({ for: user.username }, (err, count) => {
        if (err) res.send('there is something wrong with counting likes');
        console.log('inside: ' + user.username);

      })
    });
  }
});

指针

  • users 是一个数组,你不能用 来检查数组是否为假if (array),因为空数组是真的。所以检查长度if (array.length > 0
  • 这不是您的问题,但使用本机数组方法比您自己的 for 循环更安全。例如users.forEach... 而不是for (var i = 0; ....

推荐阅读