2014-03-13 38 views
5

我想使用mongo來存儲全局提要的數據,但我想用redis緩存最近發佈的內容。有沒有辦法建立一個模型來使用兩個適配器?如果沒有,我想我會嘗試讓一個控制器使用兩個模型。在一個模型中使用兩個不同的適配器

回答

6

這是一個實驗性功能,但你可以一個模型中使用多個連接,並連接可以使用不同的適配器:

在帆v0.9.x模式,與mongoredis定義/config/adapters.js

module.exports = { 

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

} 

在帆v0.10.x模式,與mongoredis/config/connections.js定義:

module.exports = { 

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

} 

但是,您不能指定某些屬性使用一個連接,而其他屬性使用另一個連接。如果涉及多個適配器,並且適配器具有相同的方法,則它們將合併在一起。在同一模型中使用sails-mongosails-redis就是這種情況;兩個適配器都有find,create,updatedestroy,因此您的模型最終只能使用其中一種適配器的方法(在上面的示例中爲sails-redis)。

然後,多個適配器的用途是什麼?這是將外部API方法添加到模型的一種方法。例如,如果您有代表生活在Amazon S3上的文件的File模型,則可以使用sails-s3適配器與uploaddownload方法以及sails-mongo一起存儲有關該文件的元數據。

緩存也是active development中的一項功能,但同時最好的辦法是使用單獨的緩存模型,如您所建議的那樣。

+0

這正是我所期待的。在屬性之間進行選擇會很好(對於redis中的每個帖子,我會想要用戶名,用戶的圖像和其他特定數據,而我認爲我只想在我的mongo數據庫中擁有用戶標識),但是這個應該足夠好。 – Teeknow

+0

要指定我的意思是「我只想在我的mongo數據庫中的用戶ID」我的意思是我只想要用戶的ID存儲在他們的帖子。 – Teeknow

+0

這仍然是實驗性的,或者我可以在生產應用程序中使用它嗎? – theblang

相關問題