node.js + express + sqlserver构建简单的后台服务
项目整体结构
。
express服务器入口文件
// node 后端服务器
const userApi = require('./api/userApi')
const bodyParser = require('body-parser')
const express = require('express')
const app = express()
// 采用设置所有均可访问的方法解决跨域问题
app.all('*', function (req, res, next) {
// 设置允许跨域的域名,*代表允许任意域名跨域
res.header('Access-Control-Allow-Origin', '*')
// 允许的header类型
res.header('Access-Control-Allow-Headers', 'content-type')
// 跨域允许的请求方式
res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
if (req.method.toLowerCase() === 'options') {
res.send(200)// 让options尝试请求快速结束
} else { next() }
})
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
// 后端api路由
app.use('/api/user', userApi)
// 监听端口
app.listen(3000)
console.log('success listen at port:3000......')
sql server数据库部分
这部分包括两部分内容:连接数据库的配置、执行sql语句的封装
var mssql = require('mssql')
// 数据库连接配置
// 执行sql,返回数据.
const units = {
sql: function (sql, callback) {
/// 连接池
new mssql.ConnectionPool(units.config())
.connect()
.then(pool => {
let ps = new mssql.PreparedStatement(pool)
ps.prepare(sql, err => {
if (err) {
console.log(err)
return
}
ps.execute('', (err, result) => {
if (err) {
console.log(err)
return
}
ps.unprepare(err => {
if (err) {
console.log(err)
callback(err, null)
return
}
callback(err, result)
})
})
})
}).catch(err => {
console.log('Database Connection Failed! Bad Config:', err)
})
},
config: function () {
return {
user: 'sa', // SQL Server 的登录名
password: '123456', // SQL Server 的登录密码
server: 'localhost', // SQL Server 的地址
database: 'ceshi', // 数据库名称
port: 1433, // 端口号,默认为1433
pool: {
min: 0, // 连接池最小连接数,默认0
max: 10, // 连接池最大连接数,默认10
idleTimeoutMillis: 3000 // 设置关闭未使用连接的时间,单位ms默认30000
}
/* --其他属性-- */
// connectionTimeout: //连接timeout,单位ms 默认 15000
// requestTimeout: //请求timeout,单位ms默认15000
// parseJSON: //将json数据集转化成json obj
}
}
}
module.exports = units
数据库
接口APi
var units = require('../db')
var express = require('express')
var router = express.Router()
// 查询
router.post('/search', (req, res) => {
units.sql('select * from dbo.person', function (err, result) {
let msg = ''
let code = -1
if (err) {
msg = err
code = -1
} else {
msg = '成功'
code = 0
}
console.log('data :', result)
res.json({
code: code,
data: result.recordset,
msg: msg
})
})
})
module.exports = router
在server文件下运行index文件 (node index)
服务在3000端口成功运行
前端页面部分
<template>
<div class="hello">
<input v-model="userName" placeholder="请输入">
<input v-model="age" placeholder="请输入">
<button @click="search">提交</button>
</div>
</template>
<script>
export default {
name: 'Hello',
data () {
return {
}
},
methods: {
search () {
this.$http.post('http://localhost:3000/api/user/search', {
}).then((response) => { console.log(response) })
}
}
}
</script>
<style>
</style>