【发布时间】:2015-05-20 21:24:46
【问题描述】:
我有一个使用猫鼬查询我的数据库的功能。连接已经有效。但是,如果我不使用实际字符串,而是使用字符串变量,那么 .find 会返回一个未定义的对象(即它什么也找不到)。这是代码:
function getUser(obj, callback){
console.log("obj.key: " + obj.key[0].toString() + ":" + obj.value[0].toString());
var first = "name.first";
console.log("first: " + first);
var second = "nicholas";
console.log("second: " + second);
User.findOne({first:second}, 'name telephone address1 address2 city state zip country', function(err, user){//nothing can be found when not directly using a string!!!
console.log("got this user: " + user.name);
});
}
这不起作用,但是,如果我用 .find 替换该行,它会起作用:
User.findOne({"name.first":"nicholas"}, 'name telephone address1 address2 city state zip country', function(err, user){
我以前从未见过这样的事情。通常一个字符串就是一个字符串,无论你用它做什么它都会起作用。 有什么想法可能是错的吗?
p.s.console.logs:
obj.key: name.first:nicholas
第一个:name.first
第二个: nicholas
错误:console.log("got this user...cannot read null 的属性“名称”。
【问题讨论】:
-
看起来 JSON 对象的关键部分是问题所在。我可以将变量用于值部分,但由于某种原因,关键部分必须是字符串而不是变量。我也尝试过使用平面对象(名字而不是 name.first),但我得到了相同的结果。
标签: node.js string mongodb mongoose