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