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>

在这里插入图片描述
在这里插入图片描述

发布了7 篇原创文章 · 获赞 1 · 访问量 1819

猜你喜欢

转载自blog.csdn.net/qq_34893937/article/details/105142457
今日推荐