【发布时间】:2014-07-17 15:35:39
【问题描述】:
我正在创建一个架构,并且正在 MongoDB 中保存一个文档。
架构:
var userSchema = new Schema({
userID: Number,
userName: String,
userEmail: String,
teams:Array,
fbUID: String,
googleUID: String,
twitter: String
});
文档:
var users = mongoose.model('users',userSchema);
if(socialMediaType == "fbUID"){
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
fbUID : socialMediaID
});
其中 socialMediID 是在函数中传递的参数。
我正在保存:
user.save(function(err, user){
if(err) return console.error(err);
log.d("user saved", user);
});
我的查询:
function searchUser(socialMediaID, socialMediaType){
var user
if(socialMediaType == "fbUID"){
users.findOne({'fbUID': socialMediaID}, function(err, userFound){
if(err) return handleError(err);
user = userFound;
});
return user
当我这样打印用户时:
log.d("user retrieved from Database", user)
它是这样未定义的:
user retrieved from Database undefined
当我在终端上搜索时:
db.users.find()
我明白了:
{ "_id" : ObjectId("53c6a25ff34dc62bac05f6e9"), "userName" : "Andressa", "userEmail" : "userEmail", "teams" : [ ], "__v" : 0 }
{ "_id" : ObjectId("53c6b3dfedf9710db27740b2"), "userName" : "Andressa", "userEmail" : "userEmail", "fbUID" : "1234", "teams" : [ ], "__v" : 0 }
{ "_id" : ObjectId("53c6b3e0edf9710db27740b4"), "userName" : "Andressa", "userEmail" : "userEmail", "fbUID" : "1234", "teams" : [ ], "__v" : 0 }
{ "_id" : ObjectId("53c6b3e1edf9710db27740b6"), "userName" : "Andressa", "userEmail" : "userEmail", "fbUID" : "1234", "teams" : [ ], "__v" : 0 }
{ "_id" : ObjectId("53c6b3e2edf9710db27740b8"), "userName" : "Andressa", "userEmail" : "userEmail", "fbUID" : "1234", "teams" : [ ], "__v" : 0 }'
当我在终端上搜索时:
db.users.findOne({fbUID:"1234"})
我明白了:
> db.users.findOne({fbUID:"1234"})
{
"_id" : ObjectId("53c6c8b3dc1ea36cb7f5f8e1"),
"userName" : "Andressa",
"userEmail" : "userEmail",
"fbUID" : "1234",
"teams" : [ ],
"__v" : 0
}
有人知道我做错了什么吗?
感谢您的理解。
【问题讨论】:
-
知道文档保存后,能否从运行相应查询的mongodb shell中找到该文档?
-
@sigurdga,我更新了问题。
-
你做
user = userFound的例子是真实的代码吗?在这种情况下,这是因为您尝试在异步回调中设置值时返回user。例如,请参阅 How to return value from asynchronous function 了解如何解决该问题。 -
@AndreasHultgren,好的。是的,这是真正的代码。谢谢你。我去查一下。
标签: node.js mongodb mongoose undefined mongodb-query