electron使用nedb作为本地数据库
·
1.NeDB简介
1.安装
npm install nedb
2.基本使用
2.1.初始化
import Datastore from "nedb";
let config = {
autoload: true,
};
const nedb = new Datastore({
...config,
filename: "/data/setting.db",
});
2.2.增删改查
数据示例
| _id | name | gender |
|---|---|---|
| id1 | zhangsan | male |
| id2 | lisi | male |
| id3 | wangwu | female |
2.2.1.insert
插入单条
nedb.insert({
name: "zhangsan"
}, function (err, ret) {
if (err) {
reject(err);
}
resolve(ret)
});
插入多条
db.insert([{ name: "zhangsan" }, { name: "lisi" }], function (err, ret) {
if (err) {
reject(err);
}
resolve(ret)
});
2.2.2.remove
删除一条
db.remove({ _id: 'id1' }, {}, function (err, numRemoved) {
// numRemoved = 1
});
删除多条
db.remove({ gender: 'male' }, { multi: true }, function (err, numRemoved) {
// numRemoved = 2
});
删除所有
db.remove({}, { multi: true }, function (err, numRemoved) {
});
2.2.3.update
直接替换更新
nedb.update({ name: "zhangsan" }, { name: "lisi" }, {}, function (err, numReplaced) {
// numReplaced = 1
});
更新现有字段
nedb.update({ gender: 'male' }, { $set: { gender: 'female' } }, { multi: true }, function (err, numReplaced) {
// numReplaced = 2
});
2.2.4.find
单条件查询
db.find({ name: "zhangsan" }, function (err, ret) {
if (err) {
reject(err);
}
resolve(ret)
});
多条件查询
db.find({ name: "lisi", gender: "male" }, function (err, ret) {
if (err) {
reject(err);
}
resolve(ret)
});
查询所有
db.find({}, function (err, ret) {
});
2.我的实践
客户端程序运行在用户终端,会有一些留在本地的配置,考虑使用nedb来进行用户配置存储。为了方便调用,对nedb的方法做了一层封装。
import Datastore from "nedb";
let config = {
autoload: true,
};
const nedb = new Datastore({
...config,
filename: "/data/setting.db",
});
let db = {
setting: {
insert(key, value) {
return new Promise((resolve, reject) => {
nedb.insert(
{ key, value },
function (err, ret) {
if (err) {
reject(err);
}
resolve(ret);
})
});
},
remove(key) {
nedb.remove(
{ key },
{ multi: true },
function (err, numRemoved) {
if (err) {
console.log(err);
return;
}
});
},
update(key, value) {
return new Promise((resolve, reject) => {
nedb.update(
{ key },
{ $set: { value } },
{ multi: true },
function (err, numReplaced) {
if (err) {
reject(err);
}
resolve(numReplaced);
}
);
});
},
find(key) {
return new Promise((resolve, reject) => {
nedb.find(
{ key },
function (err, ret) {
if (err) {
reject(err);
}
if (ret.length == 0) {
resolve(null);
} else {
resolve(ret);
}
}
)
});
}
}
}
export default db;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)