在將模型發送到客戶端之前,是否有任何方法將某些數據放入模型中?Sails JS:在發送響應之前增強模型
例如,用戶發送請求以獲取產品列表,並且我想爲每個產品添加屬性'comment_count'。我應該怎麼做,而不是寫在控制器內的循環?
謝謝。
在將模型發送到客戶端之前,是否有任何方法將某些數據放入模型中?Sails JS:在發送響應之前增強模型
例如,用戶發送請求以獲取產品列表,並且我想爲每個產品添加屬性'comment_count'。我應該怎麼做,而不是寫在控制器內的循環?
謝謝。
不知道我的解決方案是否正確。但請嘗試重寫以下兩種方法之一:toJSON
& toObject
。雖然document是窮人,你應該嘗試這一點。如果解決方案不起作用。可能是你必須使用循環語句。看看Underscore或Lodash以方便:)。
可以重寫toJSON
實例方法添加/刪除屬性模型實例,但你只能把同步代碼的方法。一個常見的使用情形是返回之前從User
模型中刪除密碼:
toJSON: function() {
// Get the plain-object version of this instance
var obj = this.toObject();
// Remove the password
delete obj.password;
// Return
return obj;
}
toJSON
由帆默認res.json
響應方法自動調用。
不幸的是,「計數註釋」通常不是您可以同步執行的事情,因爲它需要數據庫交互。那麼,toJSON
就沒了。相反,您可以爲Product
類編寫findProducts
類方法,該方法執行正常的Product.find
,然後遍歷結果並將comment_count
屬性添加到每個類。將代碼放在模型類方法中比直接在控制器動作中執行代碼要好,因爲類方法可以從任何地方調用(即可以在多個控制器中使用它)。