NeDB,Node.js嵌入式数据库

作者 : 开心源码 本文共2126个字,预计阅读时间需要6分钟 发布时间: 2022-05-13 共143人阅读

NeDB 是使用 Node.js 实现的一个 NoSQL 嵌入式数据库操作模块, 可以充任内存数据库,也可以用来实现本地存储,甚至可以在浏览器中使用。 查询方式比较灵活,支持使用正则、比较运算符、逻辑运算符、索引以及 JSON 深度查询等,适用于不需要大量数据解决的应用系统。

本节将以一个 demo 开始,一步步讲述 NeDB 的创立及使用。

安装NeDB

使用 npm 安装 NeDB ,执行如下命令:

$ npm install nedb --save

创立NeDB数据库

引入依赖

首先,使用 require 引入 nedb

var NeDB = require('nedb')

数据库初始化

接下来,我们需要初始化一个 NeDB 对象:

var db = new NeDB({    filename: './user.db',    autoload: true,})

初始化数据库时,我们传入两个参数:filenameautoload

2 行,filename 用于指定数据存储的文件位置,在本示例中,filename 指定为同个目录下的 user.db; 第 3 行,设置 autoloadtrue ,用于无限加载数据库。

至此,我们得到了一个数据库对象 db 。 接下来,对数据库进行常规操作:插入、查询、升级、删除。

数据操作

插入

往数据库插入一条数据:

db.insert({    name: 'Alice',    age: 20,    rank: 1,}, function(err, doc) {    console.log('inserted:', doc)})

上述代码中,insert 方法接收两个参数,一个是插入的数据 doc,一个是插入后的回调函数 callback; 第 2-4 行,doc 在本例中是一个 Object 对象。实际上,doc 也可以是 NumberBooleanStringDateNull 等基本类型,或者者是 Array 类型; 第 5-7 行,callback 接收两个参数,errdocerr 表示插入错误,doc 表示插入后的数据。

查询

查询数据,我们使用 find 方法:

db.find({    name: 'Alice',}, function(err, docs) {    console.log('Alice found:', docs)})

同样,find 方法也接收两个参数:查询条件 query 和回调函数 callback

2 行,query 参数除了接受 Object 类型,也支持其余更高级的查询形式; 第 3-5 行,callback 接收两个参数: errdocserr 表示查询错误,docs 表示查询到的数据。

升级

使用 update 方法,将 Alice 的年龄更改为 21

db.update({    name: 'Alice',}, {    $set: {        age: 21,    },}, function(err, n) {    console.log('docs updated:', n)})

与前面两个方法不同,update 方法传入的参数更多,在本例中,接收了三个参数,分别是,匹配条件 query、升级的数据 updateDoc 和 回调函数 callback

queryfind 方法的相同,我们重点来看看 updateDoccallback

4-6 行,毫无疑问 {age: 21} 是需要升级的数据,那 set* 又是什么作用呢?我们更新数据时,可能有时需要全量更新,但是更多时候只需替换指定的字段; 这个 *set 就是表示,只升级指定的字段。第 7-9 行,同样,callback 第一个参数 err 表示升级错误,第二个参数 n 表示升级的个数。

现在,我们查询下数据,看能否真的如愿升级了 Alice 的年龄:

db.find({    name: 'Alice',}, function(err, docs) {    console.log('Alice changed:', docs)})

删除

最后,使用 remove 方法删除有关 Alice 的数据:

db.remove({    name: 'Alice',}, function(err, n) {    console.log('docs deleted:', n)})

remove 方法接收的参数与 find 方法相似,此处不再赘述。 需要注意的是,callback 函数接受的第二个参数 n 是表示被删除的个数,而不是删除的数据。

同样,我们也通过 find 方法,验证数据能否已经被删除了:

db.find({    name: 'Alice',}, function (err, docs) {    console.log('Alice removed:', docs)})

运行demo

最后,我们运行 demo.js,体会下数据从创立到删除的过程。打开终端,执行:

$ node demo.js

在终端可看到以下输出:

inserted: { name: 'Alice', age: 20, rank: 1, _id: '6YB3yV31XIvknXMm' }Alice found: [ { name: 'Alice', age: 20, rank: 1, _id: '6YB3yV31XIvknXMm' } ]docs updated: 1Alice changed: [ { name: 'Alice', age: 21, rank: 1, _id: '6YB3yV31XIvknXMm' } ]docs deleted: 1Alice removed: []

这样,我们成功地运行了一个完整的 nedb 例子。

附录

更多 Node.js 技术文章请访问:Node.js小册

订阅升级,获取更多学习资料,请关注我们的 微信公众号 :

小菜学编程

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » NeDB,Node.js嵌入式数据库

发表回复