现在我已经玩过nodeJS和SocketIO,并且一切正常。 但现在我陷入了一个查询!Mongoose NodeJS只有未定义的值
// User Auth Event
socket.on('userAuth', function(userObj) {
var queryUserAuth = User.find({
name : userObj.name
})
.where('password',userObj.pword);
queryUserAuth.exec(function(err, userData){
if(err) {
socket.emit('userAuthOK',err);
console.log('!! User: %s or PW not OK', userObj.name);
return handleError(err);
}else {
console.log('User: %s known, userID: %s', userObj.name, userData.userid);
socket.emit('userAuthOK', userData.userid);
socket.join(userData.userid); // Create new room/join this room
}
});
});
但所有的时间VAR“用户数据”是空的,上面的console.log告诉我:“用户:testuser的已知用户名:未定义”。 我无法通过这种方式从MongoDB获取此用户对象,但是如果我使用mongo控制台,则可以找到该用户。
/////////// 编辑: 经过一些改变...在这里新的代码...但仍然没有找到正确的记录,并得到null的结果。
// User Auth Event
socket.on('userAuth', function(userObj) {
var queryUserAuth = User.findOne({
name : userObj.name,
password : userObj.pword
});
//.where("password").equals(userObj.pword);
queryUserAuth.exec(function(err, userData){
if(err) {
socket.emit('userAuthOK',err);
console.log('!! User Auth Error: %s', err);
return handleError(err);
}else {
if(!userData){
console.log('!! User: %s or PW not OK.', userObj.name);
socket.emit('userAuthOK','fail');
}else {
console.log('User: %s known, userID: %s', userObj.name, userData);
socket.emit('userAuthOK', userData);
socket.join(userData.userid); // Create new room/join this room
}
}
});
});
在这里,输出由手动查询上蒙戈壳:
db.user.find({名称: 'TESTUSER',密码: '测试'}){ “_id”:的ObjectId( “55a8cc8240fdc97f108d4d11”), “用户id”: “1”, “名”: “testuser的”, “电子邮件”: “[email protected]”, “密码”: “测试”}
这是userObj的值:{name:'testuser',pword:'test'}
///// EDIT2:
这里的user.js的包括用户的猫鼬模型:
// Load the MongoDB module
var mongoose = require('mongoose');
// user schema
var userSchema = mongoose.Schema({
userid: Number,
name: String,
email: String,
password: String,
status: Number
});
// compiling the user schema
var User = mongoose.model('User', userSchema);
// make this available to our users in our Node applications
module.exports = User;
这里包括模型:
// Load Mongoose models
var User = require('./models/user');
您是否尝试过搜索所有用户?你确定你已经连接到你的node.js代码中正确的数据库吗? – veggiesaurus
是的,我做过。一切都很好,其他查询运行没有任何问题。 – km65
@JohnnyHK: 你是我的英雄!非常感谢! – km65