前言
針對剛剛安裝好的sails,內建了一個開發環境下的localdb,所有的相關create操作,都會,在.tmp
目錄下會生成一個隱藏檔案localDiskDb.db
。
在config/connections.js
檔案中有描述,本地儲存只是用於開發環境的。
/***************************************************************************
* *
* Local disk storage for DEVELOPMENT ONLY *
* *
* Installed by default. *
* *
***************************************************************************/
// localDiskDb: {
// adapter: `sails-disk`
// },
所以我們要配置一個線上的儲存。那就鎖定redis咯。參照github的專案,進行安裝
https://github.com/balderdashy/sails-redis
安裝配置
具體的安裝命令為
npm install sails-redis
配置
將下面的連結配置放到config/connection.js
中
redis: {
adapter: "sails-redis",
port: 6379,
host: `localhost`
}
將config/models.js
中的connection
修改為redis
// connection: `localDiskDb`,
connection: `redis`,
注意:config/models.js
中的migrate: `safe`
,配置項很關鍵,如果為drop
的話,那麼每次重新啟動的時候,資料來源都會被重置(資料丟失)。所以這裡我改成了safe
操作
建立資料
在控制器中直接寫
module.exports = {
/**
* 第一個初始化方法
* @param {[type]} req [description]
* @param {[type]} res [description]
* @return {[type]} [description]
*/
create:function(req, res) {
// 建立了一條記錄
User.create({name:`lucy`,age:19}).exec(function(err,records) {
return res.json(records);
});
},
// 列出資料
list:function(req, res) {
User.find({where:{
name:`lucy`
},sort:`createdAt desc`}).exec(function(err, records) {
return res.json(records);
})
}
};
查詢結果
[
{
"name": "lucy",
"age": "19",
"createdAt": "2017-02-10T11:21:41.007Z",
"updatedAt": "2017-02-10T11:21:41.007Z",
"id": 7
},
{
"name": "lucy",
"age": "19",
"createdAt": "2017-02-10T11:21:40.807Z",
"updatedAt": "2017-02-10T11:21:40.807Z",
"id": 6
},
{
"name": "lucy",
"age": "19",
"createdAt": "2017-02-10T11:21:40.507Z",
"updatedAt": "2017-02-10T11:21:40.507Z",
"id": 5
},
{
"name": "lucy",
"age": "19",
"createdAt": "2017-02-10T11:21:38.414Z",
"updatedAt": "2017-02-10T11:21:38.414Z",
"id": 4
},
{
"name": "lucy",
"age": "19",
"createdAt": "2017-02-10T11:21:33.802Z",
"updatedAt": "2017-02-10T11:21:33.802Z",
"id": 3
}
]
總結
waterline 的orm操作,將redis進行重新封裝後,依然感覺像是操作mongo的文件型別的nosql。
目前還沒有學到相關直接操作redis的地方,而且針對connections目前看來不能同時支援多個資料來源的操作。