SailsJS覆盖模型方法

我将caching(redis)添加到我的项目中,并希望将其编码到模型逻辑中而不是控制器中。 我需要覆盖模型方法,并在那里添加caching的逻辑。

我知道我可以重写某些方法,如findfindOne但我不知道该返回什么。

示例(伪)

 findOne: function () { cache.get(key, function (err, data) { if (data === null) // No cache data // get the data and return it else // return the cache data }); } 

问题是这些模型方法不只是返回数据,而是返回模型本身的一个实例(用于链接)。

不确定如何返回数据,以及如何获取数据,如果它尚未设置。 有没有人做过这样的事情?

       

网上收集的解决方案 "SailsJS覆盖模型方法"

caching是我们喜欢Waterline的东西,但是目前唯一的方法就是创build自己的适配器 。 在这一点上,重写findfindOne并不是真的可行,因为如果你的caching空了,并且你想继续查询,没有好的方法来访问底层的“父”方法。

在你的情况下,分叉现有的适配器(如sails-mysql )添加Rediscaching可能比从头开始更具build设性。 如果可以将caching层添加为分叉适配器的单独的,可安装的模块(即,依赖项),那么跨越其他适配器复制function并且最终滚入适配器规格本身会更容易。 如果有人想解决这个问题,那将是一个很大的贡献! 您也可以在Sails IRC频道(irc://irc.freenode.net/sailsjs)中询问是否有人正在进行类似的工作。