node.js - 无法读取猫鼬中未定义的属性“用户名”
问题描述
我想访问循环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) ;
我无法弄清楚出了什么问题!
解决方案
试试这个:
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; ...
.
推荐阅读
- php - Laravel 5:使用 Blade 显示 HTML 不是所有标签
- sql - 如何在查询中使用 'like [table1].[column1] & "*"'
- django - 如何在django中解决'只能将str(不是“ManyRelatedManager”)连接到str'
- django - 来自 python 标准库的 ImportError
- r - 按 ID 返回排名
- java - 有没有一种方法可以测试 RESTful api 而无需在 Serenity 中实际运行后端计算
- java - Dijkstra 算法给出错误的最短路径
- gpu - 强制 gnu-parallel 将替换字符串视为命令
- amazon-ec2 - 如何在 aws-ec2 上安装 AutoKeras
- r - 写入 Excel 工作表时,如何在每次运行脚本时添加新行?