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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sails 中恢复生命周期回调?

有没有更好的方法来避免重复的生命周期回调?

Android Activity的生命周期简单总结

Activity 学习笔记02-生命周期

Activity 学习笔记02-生命周期

引用单个表的多列 - Sails JS API 模型