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}));