阅读(278) (0)

Nedb new Datastore()

2017-07-11 19:12:17 更新

new Datastore(options)

作用:

初始化一个数据存储,相当于MongoDB的一个集合、Mysql的一张表。

options对象配置参数:

① filename(可选): 数据存储文件路径。如果为空,数据将会自动存储在内存中。注意路径不能以“~”结尾。

② inMemoryOnly(可选,默认false): 数据存储方式。是否只存在于内存中。

③ loadDatabase: 将数据加载到内存中。

④ timestampData(可选,默认false): 自动生成时间戳,字段为createdAt和updateAt,用来记录文档插入和更新操作的时间点。

⑤ autoload(可选,默认false): 如果使用autoload,当数据存储被创建时,数据将自动从文件中加载到内存,不必去调用loadDatabase。注意所有命令操作只有在数据加载完成后才会被执行。

⑥ onload(可选): 在数据加载完成后被调用,也就是在loadDatabase方法调用后触发。该方法有一个error参数,如果试用了autoload,而且没有定义该方法,在数据加载过程中出错将默认会抛出该错误。

⑦ afterSerialization(可选): 在数据被序列化成字符串之后和被写入磁盘前,可以使用该方法对数据进行转换。比如可以做一些数据加密工作。该方法入参为一个字符串(绝对不能含有字符“\n”,否则数据会丢失),返回转换后的字符串。

⑧ beforeDeserialization(可选): 与afterSerialization相反。两个必须成对出现,否则会引起数据丢失,可以理解为一个加密解密的过程。

⑨ corruptAlertThreshold(可选): 默认10%,取值在0-1之间。如果数据文件损坏率超过这个百分比,NeDB将不会启动。取0,意味着不能容忍任何数据损坏;取1,意味着忽略数据损坏问题。

⑩ compareStrings(可选): compareStrings(a, b)比较两个字符串,返回-1、0或者1。如果被定义,将会覆盖默认的字符串比较方法,用来兼容默认方法不能比较非US字符的缺点。

注:如果使用本地存储,而且没有配置autoload参数,需要手动调用loadDatabase方法,所有操作(insert, find, update, remove)在该方法被调用前都不会执行。还有就是,如果loadDatabase失败,所有命令也将不会执行。

示例


// 示例 1: 内存数据库(没有必要调用loadDatabase方法)
var Datastore = require('nedb'),
    db = new Datastore();
 
 
// 示例 2: 本地存储需要手动调用loadDatabase方法
var Datastore = require('nedb'),
    db = new Datastore({ filename: 'path/to/datafile' });
db.loadDatabase(function (err) {    // 回调函数(可选)
  // Now commands will be executed
});
 
 
// 示例 3: 带有autoload配置项的本地存储
var Datastore = require('nedb'),
    db = new Datastore({ filename: 'path/to/datafile', autoload: true });
// You can issue commands right away
 
 
// 示例 4: 创建多个数据存储
db = {};
db.users = new Datastore('path/to/users.db');
db.robots = new Datastore('path/to/robots.db');
 
// 如果不配置autoload,需要加载数据库(该方法是异步的)
db.users.loadDatabase();
db.robots.loadDatabase();