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