LowDB 是一个小型的本地 JSON 数据库,可以省去连接 sql 数据库的麻烦,数据直接保存在本地 json 文件里。
一、项目地址
二、安装
npm install lowdb
三、使用例子
1.引入
//引入 LowDB
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('./db/db.json')
const db = low(adapter)
2.设置默认数据结构
//设置默认数据结构 (如果你的 JSON 文件为空)
//推荐设置,不设置的话如果是新的 json 文件,或者变更了结构,会报错
db.defaults({
servers: []
}).write()
3.增
//插入数据 (以添加一个csgo服务器IP为例子)
db.get('servers')
.push({ name: 'ZombiEden ZE 1#', ip: 'csgoze.cn:27050'})
.write()
4.查
//查找全部数据
//为了更好的性能, 如果你只读而不写数据, 请使用 .value() 代替 .write()
db.get('servers')
.value()
//根据 name 字段查找数据(一条)
db.get('servers')
.find({ name: 'ZombiEden ZE 1#' })
.value()
//根据 name 字段查找数据(多条)
db.get('servers')
.filter({ name: 'ZombiEden ZE 1#' })
.value()
5.改
//更新数据
db.get('servers')
.find({ name: 'ZombiEden ZE 1#' })
.assign({ ip: 'csgoze.cn:27051'})
.write()
6.删
//删除数据
db.get('servers')
.remove({ name: 'ZombiEden ZE 1#' })
.write()
四、实例
上一篇博文介绍了 Discord BOT 的搭建,这里就试一下把 LowDB 用进去,实现 BOT 通过用户的指令去新增数据。
下面仅为部分关键代码,完整代码请参考我上一篇博文。
bot.on('message', function (user, userID, channelID, message, evt) {
//当接收到的信息以 '!' 开头时,进入判断
if (message.substring(0, 1) == '!') {
var args = message.substring(1).split(' ');
var cmd = args[0];
args = args.splice(1);
switch(cmd) {
case 'addserver':
//参数数量不对时,提醒用户命令格式
if (args.length!=3) {
bot.sendMessage({
to: channelID,
message: '<@'+userID+'> 新增要监测的服务器: `!addserver <csgo/css> <备注名> <IP>`\n参数用空格隔开,参数中不得含空格,不要使用双引号'
});
return;
}
AddServer(args[0], args[1], args[2], userID, channelID);
break;
}
}
}
function AddServer(Game, Name, IP, User, ChannelID) {
if (Game != "css" && Game != "csgo") {
bot.sendMessage({to: ChannelID, message: '<@'+User+'> 游戏类型只能为`css`或`csgo`' });
return;
}
var result = db.get('servers').find({ name: Name }).value();
if (result) {
bot.sendMessage({ to: ChannelID, message: '<@'+User+'> 备注名重复' });
return;
}
result = db.get('servers').find({ ip: IP }).value();
if (result) {
bot.sendMessage({ to: ChannelID, message: '<@'+User+'> IP重复' });
return;
}
db.get('servers')
.push({ game: Game, name: Name, ip: IP})
.write()
bot.sendMessage({ to: ChannelID, message: '<@'+User+'> 添加成功' });
}
其他的删除、更新、查找也是差不多的,照葫芦画瓢就好啦~
