这是一个非常奇怪的问题。
我不能使用数组usong mongoose。
这是我的用户架构:
var userSchema = mongoose.Schema({
list_users_ticked: [String],
name : { type: String, required: true } ,
reg_id: { type: String, required: true, unique: true }
});
这是我尝试使用此架构更新用户的方法:
exports.update = function(cur_reg_id, user_ticked) {
User.find({reg_id: cur_reg_id},function(err, users){
if (err) throw err;
var len = users.length;
if(len == 0 || len > 1){
callback({'response':"You didn't register"});
} else {
var usr = users[0];
console.log(usr)
usr.list_users_ticked.push("This line is returning the `error!!!!!");`
// users[0].save(function(err) {
// if (err) throw err;
/// callback({'response':"User Saved " + user_ticked});
// });
}});
//console.log('User successfully updated!');
}
这是我登录用户的方式:
exports.login = function(name, list_users_ticked, reg_id, callback) {
var newuser = new User({
name: name,
list_users_ticked: list_users_ticked,
reg_id: reg_id
});
User.find({reg_id: reg_id},function(err, users){
var len = users.length;
if(len == 0){
newuser.save(function (err) {
callback({'response':"Sucessfully Registered"});
});
}else{
callback({'response':"User already Registered"});
}});
}
这就是错误:
TypeError: Cannot read property 'push' of undefined
有人知道为什么会这样吗?
答案 0 :(得分:0)
检查您的数据库。在架构中创建阵列之前,您是否已在数据库中保存了项目?如果你有一个没有字段list_users_ticked
的项目,你会看到该错误,因为调用push不存在。