NodeJS操作SQL Server数据库实战
近的项目有用到NodeJS对SQL Server数据库进行简单的增删改查操作,下面就针对相关的流程进行一下简单的记录。
安装相关依赖包
koa
、koa-router
、koa-bodyparser
、koa-body
这里使用koa框架编写服务端,轻便快捷nodemon
使用nodemon随时监听文件的变更,自动重启服务,我们开发时只需关注代码即可,不再需要手动重启服务mssql
MSSQL 是Nodejs用于连接Microsoft SQL Server 的插件
相关命令如下:
npm init //填写项目相关信息
npm install koa koa-router koa-bodyparser koa-body mssql
npm install nodemon -g
复制代码
修改package.json
配置
- 在
scripts
加入"start": "nodemon app"
使用nodemon
启动(这样后续修改代码就会自动更新啦~)
修改后的package.json
如下:
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app"
},
"author": "xpsilvester",
"license": "ISC",
"dependencies": {
"koa": "^2.13.1",
"koa-body": "^4.2.0",
"koa-bodyparser": "^4.3.0",
"koa-router": "^10.0.0",
"mssql": "^7.1.0"
}
}
复制代码
编写路由
- 新建
routes.js
, 具体代码如下:
const Router = require('koa-router') //路由模块
const router = new Router()
router.get('/index', async (context, next) => {
context.body = {
data: { get: 1 },
status: 0
}
})
module.exports = router
复制代码
- 新建
app.js
,具体代码如下:
const Koa = require('koa')
const app = new Koa()
const JSON_MIME = 'application/json' //json类型
const router = require('./routes') //路由
const bodyParser = require('koa-bodyparser')
const koaBody = require('koa-body')
app.use(koaBody({
multipart: true, // 支持表单上传
formidable: {
maxFileSize: 10 * 1024 * 1024, // 修改文件大小限制,默认位2M
}
}))
app.use(async (context, next) => {
context.type = JSON_MIME
await next()
})
app.use(bodyParser())
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(8010)
console.log('app start at 8010')
复制代码
- 运行demo
在命令行输入:
npm start
复制代码
在浏览器打开http://localhost:8010/index
,显示如下,说明初步代码跑通了
{"data":{"get":1},"status":0}
复制代码
连接SQL Server
数据库
- 新建
db
文件夹,在文件夹中新建db.js
,具体代码如下:
//db.js
const sql = require('mssql');
//连接方式1:"mssql://用户名:密码@ip地址(无需端口号)/SqlServer名/数据库名称"
//连接方式2:"mssql://用户名:密码@ip地址:1433(默认端口号)/数据库名称"
//这里采用连接方式2
const dbconfig = "mssql://sa:123456@xxx.xx.x.xxx:1433/mydata"
const SQLQuery = function (queryStr) {
return sql.connect(dbconfig).then(function () {
return new sql.Request().query(queryStr)
// Stored Procedure
}).catch(function (err) {
console.log(err);
});
}
module.exports = SQLQuery
复制代码
假设有 users
表如下:
id | name | age |
---|---|---|
1 | 小王 | 18 |
2 | 小李 | 17 |
对users
表进行增删改查
- 新建
controller
文件夹,在文件夹中新建User.js
,具体代码如下:
const SQLQuery = require('../db/db')
module.exports = {
//新增用户
async addUser (name,age) {
let res = await SQLQuery(`insert into users (name,age) values ('${name}','${age}')`);
return res
},
//获取用户列表
async getUserList () {
let userlist = await SQLQuery(`select * from users`);
return userlist.recordset
},
//更新用户列表
async updateUserList(name,age){
let res = await SQLQuery(`update users set age = ${age} where name = '${name}'`)
return res
},
//删除用户
async delUser(id){
let res = await SQLQuery(`delete from users where id = ${id}`)
return res
}
}
复制代码
- 修改路由文件
routes.js
,具体代码如下:
const Router = require('koa-router') //路由模块
const router = new Router()
const User = require('./controller/User') //引入user
router.get('/index', async (context, next) => {
context.body = {
data: { get: 1 },
status: 0
}
})
//获取用户列表
router.get('/userlist', async (context, next) => {
let userlist = await User.getUserList()
context.body = {
data: userlist
}
})
//新增用户
router.post('/addUser', async (context, next) => {
console.log(context.request.body)
let body = context.request.body;
let res = await User.addUser(body.name,body.age)
context.body = {
data: res
}
})
//更新用户列表
router.post('/updateUserList', async (context, next) => {
console.log(context.request.body)
let body = context.request.body;
let res = await User.updateUserList(body.name,body.age)
context.body = {
data: res
}
})
//删除用户
router.post('/delUser', async (context, next) => {
console.log(context.request.body)
let body = context.request.body;
let res = await User.updateUserList(body.id)
context.body = {
data: res
}
})
module.exports = router
复制代码
这样使用Node连接SQL Server数据库,能够进行简单增删改查的服务端就已经完成了。
使用orm
框架
以上代码主要是直接编写sql语句进行数据库操作,除此之外,还可以使用现成的orm
框架。orm
简单的讲就是对SQL查询语句的封装,让我们可以用OOP的方式操作数据库,优雅的生成安全、可维护的SQL代码。直观上,是一种Model和SQL的映射关系。
TypeORM
: 详细介绍见 TypeORM 官方介绍,这个文档写的非常详细,感兴趣的朋友可以了解一下。Sequelize
: 文档见 Sequelize,被star数多了一个ORM框架,体构造也容易上手,操作简单,容易理解。
相关文章