前言
针对刚刚安装好的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目前看来不能同时支持多个数据源的操作。