Sails JS:在发送响应之前增强模型

时间:2014-10-02 14:38:52

标签: model customization sails.js

有没有办法在将某些数据发送到客户端之前将其放入模型中?

例如,用户发送获取产品列表的请求,我想添加一个属性' comment_count'每个产品。我应该怎么做而不是在控制器内写一个循环?

谢谢。

2 个答案:

答案 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属性添加到每个类。将代码放在模型类方法中比直接在控制器操作中执行更好,因为可以从任何地方调用类方法(即,它可以在多个控制器中使用)。

相关问题