2013-03-03 82 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