2014-10-02 19 views
2

在將模型發送到客戶端之前,是否有任何方法將某些數據放入模型中?Sails JS:在發送響應之前增強模型

例如,用戶發送請求以獲取產品列表,並且我想爲每個產品添加屬性'comment_count'。我應該怎麼做,而不是寫在控制器內的循環?

謝謝。

回答

1

不知道我的解決方案是否正確。但請嘗試重寫以下兩種方法之一:toJSON & toObject。雖然document是窮人,你應該嘗試這一點。如果解決方案不起作用。可能是你必須使用循環語句。看看Underscore或Lodash以方便:)。


1

可以重寫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屬性添加到每個類。將代碼放在模型類方法中比直接在控制器動作中執行代碼要好,因爲類方法可以從任何地方調用(即可以在多個控制器中使用它)。

相關問題