在一个模型中使用两个不同的适配器

Tee*_*now 5 sails.js waterline

我想使用mongo存储全局Feed的数据,但我想用redis缓存内存中的最新帖子.有没有办法设置一个模型使用两个适配器?如果没有,我想我会尝试让一个控制器使用两个模型.

sgr*_*454 6

这是一个实验性功能,但您可以让单个模型使用多个连接,并且连接可以使用不同的适配器:

在Sails v0.9.x模型中,使用mongoredis定义/config/adapters.js:

module.exports = {

    adapter: ['mongo', 'redis']
    attributes: {...}

}
Run Code Online (Sandbox Code Playgroud)

在Sails v0.10.x模型中,使用mongoredis定义/config/connections.js:

module.exports = {

    connections: ['mongo', 'redis']
    attributes: {...}

}
Run Code Online (Sandbox Code Playgroud)

但是,您不能指定某些属性使用一个连接,而其他属性使用另一个属性.如果涉及多个适配器,并且适配器具有相同的方法,则它们将合并在一起.这将是使用sails-mongosails-redis在同一模型中的情况; 这两个适配器有find,create,updatedestroy,因此你的模型最终将只使用的适配器的方法之一(sails-redis在上面的例子).

那么多个适配器有什么用?这是一种向模型添加外部API方法的方法.例如,如果您有一个File代表生活在Amazon S3上的文件的模型,您可以使用sails-s3带有uploaddownload方法的适配器sails-mongo来存储有关该文件的元数据.

缓存也是一个正在积极开发中的功能,但与此同时,最好的办法是使用单独的缓存模型,如您所建议的那样.