DB (本地存储)

获取 db (数据库实例)

var DB = RongDesktop.require('DB');
DB.connect('rongcloud').then(function(db) {
    console.log(db);
});

db.define(name, attributes)

定义数据模型

参数说明:

参数 类型 是否必填 说明 桌面版版本
name String 模型名 2.0.0
attributes Object 模型字段 2.0.0

详情可参考: https://github.com/demopark/sequelize-docs-Zh-CN/blob/master/models-definition.md

示例代码:

var attributes = {
    title: {
        type: DB.STRING,
        allowNull: false
    },
    description: DB.TEXT,
    deadline: {
        type: DB.DATE,
        defaultValue: new Date()
    }
};
var Task = db.define('task', attributes);

db.get(name)

获取数据模型

参数说明:

参数 类型 是否必填 说明 桌面版版本
name String 模型名 2.0.0

示例代码:

var attributes = {
    title: {
        type: DB.STRING,
        allowNull: false
    },
    description: DB.TEXT,
    deadline: {
        type: DB.DATE,
        defaultValue: new Date()
    }
};
db.define('task', attributes);
var Task = db.get('task');

db.sync(option)

数据库同步, 定义或删除模型后, 需要调用 db.sync 同步数据库, 否则创建将会失败.

option 参数说明:

参数 类型 是否必填 说明 桌面版版本
match Regexp 匹配同步的数据库名 2.0.0
force Boolean 先丢弃模型, 再重新创建 2.0.0

示例代码:

db.sync({
    // 只匹配名称以 'rongcloud' 结尾的数据库
    match: /rongcloud$/,
    force: true
}).then(function() {
    console.log('sync success');
}).catch(function(err) {
    console.log('sync error', err);
});

Model.drop()

删除数据模型. Model 为数据模型, 可通过 db.define 或 db.get 获取

示例代码:

var Task = db.get('task');
Task.drop();

Model.create(attributes)

创建单个数据. Model 为数据模型, 可通过 db.define 或 db.get 获取

详情可参考: https://github.com/demopark/sequelize-docs-Zh-CN/blob/master/instances.md

示例代码:

var Task = db.get('task');
Task.create({
    title: 'foo',
    description: 'bar'
}).then(function(task) {
    // { id: 1, title: 'foo', description: 'bar', deadline: 'Thu May 24 2018 10:51:32 GMT+0800 (CST)' }
});

Model.bulkCreate(attrList)

批量创建. Model 为数据模型, 可通过 db.define 或 db.get 获取

示例代码:

var Task = db.get('task');
Task.bulkCreate([
    { title: 'foo', description: 'foo' },
    { title: 'bar', description: 'bar', deadline: new Date() }
]).then(function() {
    // 注意: 此处没有返回查询结果, 需要执行 Task.findAll()
    return Task.findAll();
}).then(function(taskList) {
    // 注意: 此处返回的是 Task.findAll 的结果, 也就是 Task 的所有实例
});

Model.find(option)

获取单个数据. Model 为数据模型, 可通过 db.define 或 db.get 获取

option 参数说明:

参数 类型 是否必填 说明 桌面版版本
attributes Array 只查询指定属性, 获取结果中其他属性为空, 不填则获取所有 2.0.0
where Object 查询条件 2.0.0

where 详情可参考: http://docs.sequelizejs.com/manual/tutorial/querying.html#where

示例代码:

var Task = db.get('task');
// SELECT 'title', 'description' FROM tasks AS task WHERE task.title = 'foo' LIMIT 1;
Task.find({
    attributes: [ 'title', 'description' ],
    where: {
        title: 'foo'
    }
}).then(function(task) {
    // { title: 'foo', description: 'new task' }
});

Model.findAll(option)

批量查询. Model 为数据模型, 可通过 db.define 或 db.get 获取

option 参数说明:

参数 类型 是否必填 说明 桌面版版本
attributes Array 只查询指定属性, 获取结果中其他属性为空 2.0.0
where Object 查询条件 2.0.0

示例代码:

// SELECT 'title', 'description' FROM task WHERE title = 'foo' OR title = 'bar';
var Task = db.get('task');
Task.findAll({
    attributes: ['title', 'description'],
    where: {
        title: {
            [Op.or]: [ 'foo', 'bar' ]
        }
    }
}).then(function(taskList) {
    /*
    [
        { title: 'foo', description: 'new task' },
        { title: 'bar', description: 'new task' }
    ]
     */
});

Model.update(attributes, option)

批量更新. Model 为数据模型, 可通过 db.define 或 db.get 获取

参数说明:

参数 类型 是否必填 说明 桌面版版本
attributes Object 属性值 2.0.0
option Object 更新设置 2.0.0

option 参数说明:

参数 类型 是否必填 说明 桌面版版本
where Object 更新范围 2.0.0

option 详情可参考: http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-update

示例代码:

var Task = db.get('task');
var attributes = {
    description: 'new task'
};
var option = {
    where: {
        title: 'foo'
    }
};
// UPDATE tasks SET description='new task' WHERE title = 'foo'
Task.update(attributes, option)
    .then(function() {
        return Task.findAll();
    })
    .then(function(taskList) {
        // 注意: 此处返回的是 Task.findAll 的结果, 也就是 Task 的所有实例
    });

Model.destroy(option)

批量删除. Model 为数据模型, 可通过 db.define 或 db.get 获取

参数说明:

参数 类型 是否必填 说明 桌面版版本
option Object 删除设置 2.0.0

option 详情可参考: http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-destroy

示例代码:

var Task = db.get('task');
// DELETE FROM tasks WHERE title = 'foo'
var option = {
    where: {
        title: 'foo'
    }
};
Task.destroy(option).then(function() {
    console.log('destroy success');
});

results matching ""

    No results matching ""