Sails.js:模型的生命周期回调:它们是不是支持 beforeFind 和 afterFind?
Posted
技术标签:
【中文标题】Sails.js:模型的生命周期回调:它们是不是支持 beforeFind 和 afterFind?【英文标题】:sails.js: Lifecycle callbacks for Models: Do they support beforeFind and afterFind?Sails.js:模型的生命周期回调:它们是否支持 beforeFind 和 afterFind? 【发布时间】:2015-01-27 10:05:09 【问题描述】:在sails.js 中,模型支持验证、创建、更新和销毁的生命周期回调。
是否也支持 find() 或查询的回调?像 beforeFind() 和 afterFind()?
这个想法是一样的。我想在查询运行之前或查询运行之后验证/修改参数。
有什么想法吗?
【问题讨论】:
waterline 也会调用 beforeValidate() 和 afterValidate() 进行查询。但是我们无法区分这些回调,无论是查询还是创建/更新。 【参考方案1】:截至撰写本文时,它不支持这些请求,但它们是拉取请求 https://github.com/balderdashy/waterline/pull/525
与此同时,您可以使用策略来执行此操作。
【讨论】:
感谢您的意见。策略会起作用,但我想从控制器和服务器端的其他地方涵盖那些我们称之为 ORM 的情况。拉取请求有一条评论,指定如何实现此请求,尽管不是最好的方式。至少,暂时我会继续使用这种方法(gist.github.com/mphasize/d62ad412e85bda06377c)【参考方案2】:我不明白为什么一开始就忽略了它。在找到每个模型之后,想要在获取的模型数据中添加一些数据实际上是合乎逻辑的。
在撰写本文时,documentation 中最接近 afterFind 的是 customToJson
模型设置。
customToJSON: function()
// Return a shallow copy of this record with the password and ssn removed.
return _.omit(this, ['password', 'ssn'])
你基本上在返回省略部分之前做你的事情。我仍然不明白为什么省略了这些生命周期。
我想我现在要写一个钩子来提供这些。我会在这里发布。
【讨论】:
以上是关于Sails.js:模型的生命周期回调:它们是不是支持 beforeFind 和 afterFind?的主要内容,如果未能解决你的问题,请参考以下文章