2017-05-18 69 views
0

全裸屬性我有類似下面的代碼:用的toJSON/toObject

User.findOne(id) 
    .exec((err, user) => { 
     Pets.find(_.pluck(user.pets, 'id')) 
      .populate("toys") 
      .exec((err, petsWithToys) => { 
       user.pets = petsWithToys; 
       return res.ok({ user: user }); 
      }); 
    }); 

當我看在客戶端的響應我看不到裏面的寵物玩具陣列。

我想也許這是因爲在我的User模型中覆蓋toJSON函數,但即使刪除它,我也會得到相同的行爲。

此外,我發現,如果我將值分配給未在模型中定義的新屬性,我確實在客戶端看到了這些值。即如果我做

user.petsNew = petsWithToys; 

我會看到完全填充的屬性。

我見過的toObject哪裏是說,它消除了實例方法(here),但我不知道爲什麼收集被認爲是一種方法,不知道如何更改值後,仍然被刪除的文檔。

任何意見/解釋/解決方法?

P.S.試圖單步執行代碼,但不能踏進toObject ...

+0

當您設置的'user.pets = petsWithToys斷點;'線和檢查'用戶',它有'玩具'嗎? –

+1

您使用的是什麼版本的Lodash?因爲v.4'_.pluck'正在被'_.map'所取代。 請參閱[此鏈接](http://stackoverflow.com/questions/35136306/what-happened-to-lodash-pluck) –

+0

@ T.J.Crowder - 是的,有 - 它只在toJSON/toObject調用中被刪除。看來下面答案中的建議可行(需要測試)。 –

回答