Node.js 套接字io,mongoose函数返回未定义的
我想创建一个函数来获取用户信息。当我从函数返回数据时,它返回未定义的Node.js 套接字io,mongoose函数返回未定义的,node.js,mongoose,socket.io,Node.js,Mongoose,Socket.io,我想创建一个函数来获取用户信息。当我从函数返回数据时,它返回未定义的。当Iconsole.log位于函数内部时,它将返回所有用户数据。怎么了 代码: 函数用户(){ var uid=socket.request.headers.cookie.uid; var pwd=socket.request.headers.cookie.pass; 如果(uid!=未定义和&pwd!=未定义){ models.user.findOne({ “\u id”:uid, “密码”:pwd },函数(错误,用户){
。当Iconsole.log
位于函数内部时,它将返回所有用户数据。怎么了
代码:
函数用户(){
var uid=socket.request.headers.cookie.uid;
var pwd=socket.request.headers.cookie.pass;
如果(uid!=未定义和&pwd!=未定义){
models.user.findOne({
“\u id”:uid,
“密码”:pwd
},函数(错误,用户){
console.log(用户);
退货(用户)?用户:假;
});
}否则{
返回false;
}
}
log(user());
您需要回调,这是初学者的基本问题
function user(callback) { // receives a callback
var uid = socket.request.headers.cookie.uid;
var pwd = socket.request.headers.cookie.pass;
if (uid != undefined && pwd != undefined) {
models.user.findOne({
'_id': uid,
'password': pwd
}, callback); // pass callback to mongoose
} else {
return callback(new Error("No uid")); // pass callback when no uid
}
}
user(function(err, userData) { // now you invoke fn to user function
// err is err from database or from new Error("No uid")
// userData is database User
if (err)
return console.log(err);
console.log(userData);
// userData should be used here
// for example. send this User by socket
// socket.emit('databaseUser', userData);
});