NeDB,Node.js嵌入式数据库

更新日期: 2020-01-31阅读: 2.6k标签: sql

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,
})

初始化数据库时,我们传入两个参数:filename 和 autoload 。

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

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


数据操作

插入

往数据库插入一条数据:

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

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

查询

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

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

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

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

更新

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

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

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

query 与 find 方法的相同,我们重点来看看 updateDoc 和 callback

第 4-6 行,毫无疑问 {age: 21} 是需要更新的数据,那 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: 1
Alice changed: [ { name: 'Alice', age: 21, rank: 1, _id: '6YB3yV31XIvknXMm' } ]
docs deleted: 1
Alice removed: []

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


链接: https://fly63.com/article/detial/8029

mysqldump 备份数据库_mysqldump备份详解

数据备份是一个网站能够正常运营的保障,数据备份包括网站源码备份和数据库备份,如果你使用的是ACCESS数据库,那么直接使用FTP下载数据库文件就可以了,但如果你使用了PHP+MYSQL进行网站建设,数据库备份就没有那么容易了。

为什么企业依赖于NoSQL

如果你关注大数据科技动向,你对 NoSQL 一定不陌生,NoSQL 是一个分布式数据库。在过去时间,数据存储一直关系型数据库天下,有着良好的控制并发操作、事务功能。

sql语句备忘录

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

这种SQL写法会导致索引失效?

网上经常能看到一些文章总结在 mysql 中不能命中索引的各种情况,其中有一种说法就是指使用了 or 的语句都不能命中索引。这种说法其实是不够正确的,正确的结论应该是

websql操作类封装

由于websql操作都是异步操作,当我们为了获取到websql操作的结果之后再进行后续操作时,往往是通过回调函数来实现的,当回调一多的时候,回调地狱就出现了,为了解决回调地狱问题,我将通过Promise来改写,后续调用时

Sql中Left Join、Right Join、Inner Join的区别?

left join(左联接) :返回包括左表中的所有记录和右表中联结字段相等的记录;right join(右联接) :返回包括右表中的所有记录和左表中联结字段相等的记录

开发者必知的MySQL 8.0 新功能

下面将以 MySQL 社区的优先级从高到低来展示这些功能:MySQL 文档存储;默认 utf8mb4 编码;JSON 增强;CTEs(译者注:Common Table Expresssions 公共表格表达式)

常用SQL语句分享

日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多。笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些SQL你还不常用

node.js防止Sequelize在执行查询时将SQL输出到控制台?

有没有办法得到这个不显示?一些标志,我在一个配置文件中设置某处?最佳答案创建Sequelize对象时,将false传递给logging参数:

Mysql性能优化:为什么你的count(*)这么慢?

在开发中一定会用到统计一张表的行数,比如一个交易系统,老板会让你每天生成一个报表,这些统计信息少不了sql中的count函数。但是随着记录越来越多,查询的速度会越来越慢

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!