node-sqlite3简易后台搭建
node-sqlite3简易后台搭建
最近项目需要写一个演示用的三维Demo,其中要有用户管理界面,能对用户进行增删改查操作。当然这都是小需求,随便就写了,也
没啥。但是给我说没人给我写接口(内心:嗯,嗯???)。虽然做过一段时间的全栈开发,突然让我写后台,我还是有点不适应。但是没
办法,任务来了,干吧!
之前写的是 Java + Mysql + SpringBoot 后台,但是一个简单的用户管理,再加一个登录的接口,我是真心不想用(其实忘了不少,不
会了 哈哈)。作为一个 WebGIS 码农,最熟悉的还是 JavaScript 。那能用 Js 写后台的莫过于 Node了,再结合 express 库,很轻便的
就可以搭建一个后台。接下来就是数据库了。目前,开源免费,又小巧轻便的 sqlite 多合适啊。 同时 Node 也有 sqlite3 JS库可以操作
它。OK,技术选型定了,接下来就开始实现吧。
安装
对应Node的安装和配置,各位道友了解的比我都清楚,我就不多说了。主要讲一下 sqlite3的安装
sqlite3 (windows)数据库安装
下载地址 https://www.sqlite.org/download.html
需要下载 sqlite-dll-win32-86-xx.zip 或者 sqlite-dll-win64-xx.zip 以及 sqlite-tools-win32-x86-xx.zip
把这两个解压之后,里面的文件放到一个文件夹下
然后在系统的环境变量中,在 Path 变量里面把存放 sqlit3 的文件夹路径添加进去
最后检查一下是否安装成功 在cmd 命令行中输入 sqlit3 回车。如果安装成功出现会入下图所示:
SQLiteStudio 可视化工具
数据库用命令行操作还是不方便,SQLiteStudio 是开源,且支持多平台的一个 sqlite 可视化软件。
下载地址: https://sqlitestudio.pl/
解压文件,找到 SQLiteStudio.exe 双击打开,初次加载,需要选择语言,找到中文即可:
使用
- 建库
利用 SQLiteStudio 新建一个数据库。 Database –> Add a database :
1 是新建,2是打开。 新建的时候,选好文件夹,然后输入数据库的名称就行了。因为我之前建立了,就直接选择打开。
点击测试连接,出现绿色对号。说明连接正常。然后点击 OK。 - 建表
在 test.db 里面,我已经建好了一个 user 表格,有 id 、name 、 password 还有 create_time 四个字段。你可以用工具创建,也
可以手动创建。表的SQL语句:CREATE TABLE user (
id STRING (256) PRIMARY KEY
UNIQUE
NOT NULL,
name STRING (64) NOT NULL,
password STRING (128) NOT NULL,
create_time DATETIME NOT NULL
DEFAULT (datetime('now', 'localtime') )
);
实现
创建项目
建立一个文件夹,然后 cmd 命令 初始化:npm init -y
安装依赖
用的基础的 express 创建 Server, 然后用 sqlite3库来操作数据库。用 uuid 来生成随机的id。npm i express sqlite3 uuid --save
package.json内容如下:
代码使用 sqlite3
api 简介:代码打开数据库
const sqlite3 = require("sqlite3").verbose()
// sqlites数据库地址
let sqliteDbPath = "D:\\01_Software\\Program File\\sqlite3\\DB\\test.db"
// 打开sqlites数据库
const db = new sqlite3.Database(sqliteDbPath)新增用户
post的请求时,从 request.body 中获取请求数据,需要配置一下
const express = require('express')
// 创建 express 应用
const app = express()
app.use(express.urlencoded({extended:false}));//添加通用的JSON和URL编码的解析器作为顶级中间件,该中间件将解析所有传入请求的主体。
app.use(express.json());如果你的express的版本不是4.x及以上 那么需要用到 body-parser 库来代替 express。
const express = require('express')
const bodyParse = require('body-parser')
// 创建 express 应用
const app = express()
app.use(bodyParse.urlencoded({extended:false}));//添加通用的JSON和URL编码的解析器作为顶级中间件,该中间件将解析所有传入请求的主体。
app.use(bodyParse.json());新增用户的代码
//新增接口
const addUser = function(req,res){
const param = req.body;
const name = param.name;
const password = param.password;
const uid = uuid()
const add_sql = `insert into user (id , name ,password ) values(?,?,?)`
db.run(add_sql,[uid,name,password],function (err) {
if(err){
res.send({
msg:'插入失败',
ret:false
})
}
res.send({
code:200,
msg:'插入成功',
ret:true
})
})
}上述代码是从 request.body 获取提交的用户名 name 和密码 password,然后利用 uuid 生成一个 id,之后写了一个插入的sql
语句 add_sql。 然后用到了 sqlite3 的 run 方法来执行sql语句。代码很简单都是基本的插入语句。
启动应用,利用postman 测试一下:
结果返回插入成功,同时刷新数据库,能看到插入的最新的一条数据。修改用户
修改的逻辑是根据用户的 id 对用户名和密码进行修改。//更新
const updateUser = function(req,res){
const param = req.body;
const password = param.password;
const name = param.name;
const id = param.id;
const update_sql = `update user set name=?, password = ? where id = ?`;
db.run(update_sql,[name,password,id],function (err) {
if(err){
res.send({
msg:'更新失败',
ret:false
})
}
const data = {
code:200,
ret:true,
msg:'更新成功'
} ;
res.send(data)
})
}测试结果如下:
查询用户
查询全部数据//查询全部数据
const getAll = function(res){
db.all(`select * from user order by create_time desc `,function (err,row) {
if(err){
res.send({
msg:'查询失败',
ret:false
})
}
const data = {
code:200,
data:row,
ret:true,
msg:'查询成功'
}
// console.log(data)
res.send(data)
})
}结果如下:
删除用户
根据用户 id 删除用户。//删除 const delUser = function(req,res){ const param = req.query || req.params ; const id = param.id; const del_sql = `delete from user where id = ?`; db.run(del_sql,[id],function (err) { if(err){ res.send({ msg:'删除失败', ret:false }) } res.send({ code:200, ret:true, msg:'删除成功' }) }) }
结果如下:
代码
完整代码都放到 github 上,需要的移步node-sqlite3-server-demo
总结
总体实现还是挺简单的,也没什么复杂的 SQL 语句。部署的时候,可以把 Node 安装为 window服务,就不用担心客户那边服务器关机了。