【问题标题】: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() 进行查询。但是我们无法区分这些回调,无论是查询还是创建/更新。

标签: sails.js models waterline


【解决方案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']) 
}

你基本上在返回省略部分之前做你的事情。我仍然不明白为什么省略了这些生命周期。

我想我现在要写一个钩子来提供这些。我会在这里发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多