前言

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


jaysun
507 声望25 粉丝

Code is law