我想使用 mongo 来存储全局提要的数据,但我想使用 redis 在内存中缓存最新的帖子。有没有办法设置一个模型来使用两个适配器?如果没有,我想我会尝试让一个 Controller 使用两种模型。
最佳答案
这是一项实验性功能,但您可以让单个模型使用多个连接,并且这些连接可以使用不同的适配器:
在 Sails v0.9.x 模型中,使用 mongo
和 redis
定义于 /config/adapters.js
:
module.exports = {
adapter: ['mongo', 'redis']
attributes: {...}
}
在 Sails v0.10.x 模型中,使用
mongo
和 redis
定义于 /config/connections.js
:module.exports = {
connections: ['mongo', 'redis']
attributes: {...}
}
但是,您不能指定某些属性使用一个连接,而其他属性使用另一个。如果涉及多个适配器,并且适配器具有相同的方法,则将它们合并在一起。使用
sails-mongo
就是这种情况。和 sails-redis
同型号;两个适配器都有 find
, create
, update
和 destroy
,因此您的模型最终将仅使用一种适配器方法( sails-redis
,在上面的示例中)。那么多个适配器有什么用呢?这是一种向模型添加外部 API 方法的方法。例如,如果您有一个
File
代表 Amazon S3 上的文件的模型,您可以使用 sails-s3
带 upload
的适配器和 download
方法,旁边 sails-mongo
存储有关文件的元数据。缓存也是 active development 中的一个功能,但与此同时,您最好的选择是按照您的建议为缓存使用单独的模型。
关于sails.js - 在一个模型中使用两个不同的适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385823/