有没有办法在将某些数据发送到客户端之前将其放入模型中?
例如,用户发送获取产品列表的请求,我想添加一个属性' comment_count'每个产品。我应该怎么做而不是在控制器内写一个循环?
谢谢。
答案 0 :(得分:1)
不确定我的解决方案是否正确。但是,让我们尝试重写以下两种方法之一:toJSON
& toObject
。虽然document很差,但您应该尝试一下。如果解决方案不起作用。可能是你必须使用循环语句。看看Underscore或Lodash是否方便:)。
答案 1 :(得分: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
由Sails的默认res.json
响应方法自动调用。
不幸的是,“计数注释”通常不是您可以同步执行的操作,因为它需要数据库交互。所以,toJSON
已经出局了。相反,您可以为执行正常findProducts
的{{1}}类编写Product
类方法,然后循环结果并将Product.find
属性添加到每个类。将代码放在模型类方法中比直接在控制器操作中执行更好,因为可以从任何地方调用类方法(即,它可以在多个控制器中使用)。