2013-03-03 86 views
2

模板:玉鬼财产

p= user 

输出:

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

(中通常不被用户看到,但用于呈现布局的不同部分一些其他的东西(或不)取决于各种因素)

模板:

p= user.human 

输出:

<p>Foo Bar</p> 

如到目前为止的预期。但是,模板:

p= user.admin 

输出:

<p></p> 

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

我也尝试过使用user['admin']而不是user.admin,但那也行不通。

第一个问题:这是怎么发生的? 第二个问题:我该如何解决?

更新1:图案p #{user.admin}具有相同的效果,并且p= user.admin.toString()结果在500错误声称'user.admin' is not defined。此外,JSON.stringify(user.admin)也导致空p标签(如p= user.adminp #{user.admin}

更新2:p= JSON.stringify(user)确实输出“管理”属性:{"admin":"true","human":"Foo Bar"}但遍历usereach value,key in user输出'admin'属性。在这种情况下,输出非常长,因为它包含一堆函数和其他东西,但是我使用ctrl + f搜索输出并找不到'admin'。

+0

你可以发布JSON.stringify(用户)输出吗? – 2013-03-03 18:57:39

+0

你能访问将代码传递给jade的Javascript代码中的变量吗? – dave 2013-03-03 19:02:15

+0

@dave:no,console.log(req.user.admin)在服务器端记录'undefined';但那么JSON.stringify(用户)和普通的旧式'p = user'能够访问它呢? – 2013-03-03 19:07:02

回答

0

OK,这里的什么是错的:

我检索是有“管理”属性设置一个猫鼬的对象,但是模式实际上并没有在所有指定的“管理员”属性。我不确定Jade是如何挑选它的,但是Mongoose显然对'管理员'的财产是什么以及如何处理它高度混淆。

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

感谢戴夫和国王朱利安对你的帮助。我已经提出了你的两个答案,因为他们确实帮助我得出了这个结论(以及你的意见,但是你没有得到那些我害怕的代表)。

1

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

p #{user.admin} 

p= user.admin.toString() 
+0

前者与p = user.admin具有相同的效果,后者导致500错误,因为'user.admin'是'未定义'。感谢您的意见,但我真的很困惑。 – 2013-03-03 18:39:42

+0

然后没有user.admin。 – 2013-03-03 19:03:25

+0

尽我们所知,它是由JSON.stringify和'p = user'输出的,所以它在某种意义上必须存在。它也是在mongodb数据库中明确设置的,因为我手动设置并验证它是在之后设置的。所以它确实存在于某种形式中。 – 2013-03-03 19:08:49

1

请尝试以下

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

是否为 “admin” 得到outputed?

+0

'admin'在任何时候都不会被这个函数输出 – 2013-03-03 18:59:34