Node.js 玉鬼属性

Node.js 玉鬼属性,node.js,pug,Node.js,Pug,模板: p= user p= user.human p= user.admin 产出: <p>{ admin: "true", human: "Foo Bar" }</p> <p>Foo Bar</p> <p></p> 产出: <p>{ admin: "true", human: "Foo Bar" }</p> <p>Foo Bar</p> <p>&

模板:

p= user
p= user.human
p= user.admin
产出:

<p>{ admin: "true", human: "Foo Bar" }</p>
<p>Foo Bar</p>
<p></p>
产出:

<p>{ admin: "true", human: "Foo Bar" }</p>
<p>Foo Bar</p>
<p></p>
产出:

<p>{ admin: "true", human: "Foo Bar" }</p>
<p>Foo Bar</p>
<p></p>

我不知道这怎么可能。当我输出整个对象时,该属性就在那里,但当我尝试仅输出该属性时,它就会消失

我还尝试使用
user['admin']
而不是
user.admin
,但这也不起作用

第一个问题:这是怎么发生的? 第二个问题:我如何修复它

更新1:模式
p#{user.admin}
具有相同的效果,并且
p=user.admin.toString()
导致500个错误,声称未定义
“user.admin”
。此外,
JSON.stringify(user.admin)
也会导致空的p标记(如
p=user.admin
p{user.admin}


更新2:
p=JSON.stringify(user)
会输出'admin'属性:
{“admin”:“true”,“human”:“Foo Bar”}
但使用
每个值迭代
用户
,输入user
不会输出'admin'属性。在这种情况下,输出非常长,因为它包含一系列函数和其他内容,但我使用ctrl+f搜索输出,但找不到“admin”。

这可能是因为admin的值被解释为布尔值。有些事情可以尝试:

p #{user.admin}


请尝试以下方法

each value, key in user
    p #{value} [#{key}]

“admin”是否被输出?

好的,下面是问题所在:

我正在检索一个设置了“admin”属性的Mongoose对象,但模式实际上根本没有指定“admin”属性。我不确定Jade到底是怎么捡到它的,但Mongoose显然对“admin”属性是什么以及如何处理它非常困惑

解决方案是简单地将“admin”:“string”添加到我的mongoose.Schema对象中


感谢戴夫和朱利安国王的帮助。我对你的两个答案投了更高的票,因为它们确实帮助我得出了这个结论(以及你的评论,但我担心你没有得到代表!)。

前者的效果与p=user.admin相同,后者导致500错误,因为“user.admin”是“未定义的”。不过,感谢您的输入,我在这里真的很困惑。当时没有user.admin。恕我直言,它是由JSON.stringify和
p=user
输出的,所以它在某种意义上一定存在。它也肯定是在mongodb数据库中设置的,因为我手动设置了它,并验证了它是在之后设置的。所以它确实以某种形式存在。你能发布JSON.stringify(用户)输出吗?你能访问将该对象传递给jade的Javascript代码中的变量吗?@dave:否,服务器端的console.log(req.user.admin)日志“未定义”;但是,JSON.stringify(user)和普通的old
p=user
是如何访问它的呢?我一点也不知道……我猜你打破了Jade:-)在旁注中,console.log(req.user)确实输出了“admin”字段,这很奇怪,所以不仅仅Jade可以看到它——node.js也可以看到它,直到它被直接访问为止(表明问题在于node.js,而不是jade)