Javascript 点运算符不获取Mongoose文档对象的子属性
输出Javascript 点运算符不获取Mongoose文档对象的子属性,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,输出 console.log('>>>>>>user = '+ user); console.log('>>>>>>user.hash = '+ user.hash); 但是 输出 console.log('>>>>>>user = '+ user); console.log('>>>>>>user.hash = '+ user.hash);
console.log('>>>>>>user = '+ user);
console.log('>>>>>>user.hash = '+ user.hash);
但是
输出
console.log('>>>>>>user = '+ user);
console.log('>>>>>>user.hash = '+ user.hash);
这可能是什么原因造成的
编辑:有趣的是,
user.\u id
,(而且只有它)起作用。
我相信
用户
是一个对象
,要访问JS中的对象属性,可以使用
符号(属性访问器)
在上面发布的代码中,我可以看到ID字段缺少引号
>>>>>>user.hash = undefined
从答案中得到提示,您能否尝试将您的findOne
参数更改为:
user = { username: 'user1',
salt: '3303187e50a64889b41a7a1c66d3d3c10b9dec638fdd033bee1221d30d01c5e1',
hash: 'a174c206d88bee1594bb081dbd32d53420f6ef3d6322104f3d0722d58bc8dd8d',
_id: '52d3177481daf59c11000001',
__v: 0
};
console.log(user.hash); // accessing hash property of `user` Object.
注意:{username:newrequire('mongodb').ObjectID(username)}
基本上,您需要构造“用户名”,而不是将其作为字符串传递给findOne
update:
这完全是猫鼬的问题 一个解决办法是不减少模式。我在定义模式时使用了(用于减少数据库模式) 在这里添加
hash
解决了这个问题
var Users = mongoose.model('Users', new mongoose.Schema({
},{strict:false}));
为什么不试试
user['hash']
?@Mahan也不起作用。顺便说一句,为什么_id:与你一起工作,它没有引号,也包含字母。据我所知,您应该为此获得意外令牌非法
。您可以尝试console.log(“>>>>>user.hash=”,user.hash)
而不是console.log('>>>>>>>user.hash='+user.hash)
?@Teemu用户
是一个{object}。它是一个。用户
是输出。我没有手动设置它(或它的子节点),他有一个mongodb节点应用程序,他怎么能将它发布到JSFIDDLE至少发布console.log(typeof(user))
@laggingreflection如果它的对象,那么看看上面贴的小提琴。user就是Object。我正在访问user
的hash
属性。这对.hash
属性的可用性有何影响?好的,非常感谢。这不是答案,但这给了我正确的方向,我找到了答案。在一点时间内发布自己的答案..因此架构中未定义的属性(尽管由于严格:false而保存)确实显示在中。toString
,但不能作为属性访问?@Bergi yup,似乎是这样…
var Users = mongoose.model('Users', new mongoose.Schema({
hash: String
},{strict:false}));