1. Pre-environment deployment

  1. To install Node, please search Baidu
  2. Create a folder to put the Node project in
  3. Execute in the new node foldernpm initThe file generates a package.json file
  4. Install the Express framework and its dependencies

    npm install express

    npm install body-parser

    npm install cors –save

  5. Create the relevant file directory

    • DB folder: place database operation statements (.js file)
    • Router folder: Place the interface file (.js file)
    • Connect.js file: Link database front-end and other related operations
    • Index.js file: Main file, referencing various files, intercepting requests, back-end routing

2, connect. Js

const mysql = require('mysql') const express = require('express') const app = express() const router = express.Router();  const cors = require('cors'); Const session = require(" Express-session "); const session = require(" Express-session "); const session = require(" Express-session "); const cookieParser=require("cookie-parser") app.use(cors()); Const bodyParser = require('body-parser') // json request app.use(express.json()) // form request App.use (express.urlencoded({extended: false})) // Set session and cookie configuration app.use(cookieParser()); App.use (session({secret:'keyboard cat', // server generate declaration can optionallywrite resave:true, // force to save session even if it hasn't changed saveUninitialized:true, // Force future initialized sessions to store cookies :{// Sessions are cookie-based, Cookie maxAge:1000*60*30; Cookie maxAge:1000*60*30; }})) /** * Configure MySQL */ const option = {host: 'localhost', user: '* * * * *, password: * * * * *, the port:' 3306 ', the database: '* * * * *' connectTimeout: 5000, / / connection timeout multipleStatements: False // Allow multiple SQL statements in a query} /** * Set the request header to false; */ var allowCors = function(req, res, next) {res.header("Access-Control-Allow-Origin", req.Headers. Origin); Res. header(" Access-Control-Alone-Methods "); // Set where cross-domain requests are allowed from (Req.Headers. Origin is the domain name and port of the current Access source); "GET,PUT,POST,DELETE,OPTIONS"); Res. header("Access-Control-Allow-Headers", "Content-Type, Request-Origin "); // Set res.header("Access-Control-Allow-Credentials", "true"); // Allow the client to carry the certificate access. Cookies are maintained in cross-domain requests. Note: When set to true, the Access-Control-Allow-Origin value cannot be '*' res.header(" Access-Control-Max-Age ", 1000); Next (); next(); next(); next(); }; app.use(allowCors); let pool; Function Res ({code = 200, MSG = "", data = {}}) {this.code = code; this.msg = msg; this.data = data; } function resJson (_res, Result){if(result){return _res.json(new Res(result))}else{return}} function repool() {if(result){return _res.json(new Res(result))}else{return} Mysql. createPool({// create a connection pool... // When no connection pool is available, wait (true) or drop (false) ConnectionLimit: 100, // QueueLimit: 0 // Maximum connection wait (0 is unlimited)}) pool.on('error', err => {err.code === 'PROTOCOL_CONNECTION_LOST' && setTimeout(repool, err) 2000) }) app.all('*', (_,__, next) => { pool.getConnection( err => { err && setTimeout(repool, 2000) || next() }) }) } module.exports = { app, pool, router, resJson }

3, DB folder (SQL operation statement)

Const SQL = {queryAll: 'select * from biaoming order by si asc', // update biaoming set si=? where si=? ',// change deleteArt: 'delete from biaoming where si=? ', insert into biaoming values (? ,? ,? ,? ,? ,?) ', // add queryByIndex: 'select * from biaoming where si=? ', // select * from biaoming where title like? '// Fuzzy query} module.exports = SQL

4. Router folder (interface file)

/ / import related module, log in function, for example, this paper take request http://localhost:8088/user/login? refs name=yourval&password=yourval const { pool, router, resJson } = require('.. /connect') const userSQL = require('.. /db/userSQL') const stringRandom = require('string-random'); // generate a random number, For login authentication/login * * * * / router. Get ('/login '(the req, res) = > {/ / local interface path http://localhost:8088/user/login let user = {username: req.query.name, password: req.query.password } let _res = res; // If (!!) is null. User.username) {return userJSON (_res, {code: -1, MSG: 'userName not null'})} if (! User. password) {return resJSON (_res, {code: -1, MSG: 'password cannot be empty'})} let _data; const sessran = stringRandom(16, { numbers: true }) var usersess = req.session; / / connection pool was obtained from the connection pool. GetConnection ((err, conn) = > {/ / database link conn. Query (userSQL. QueryByNamePassword, [user username, User.password], (e, result) => {// if (e) _data = {code: -1, MSG: If (result && result. Length) {_data = {MSG: (result && result. Length) {_data = {MSG: Data: {userInfo: {session: sessran}} req.session. UserInfo = sessran; // Set session} else {code: -1, MSG: }} setTimeout(() => {return the result of operation to the front page resJSON (_res, _data)}, 500); }) pool.ReleaseConnection (conn) // Release the connection pool and wait for another connection to use})}) module.exports = router;

5, index.js entry file

const { app, Pool} =require('./connect') const user =require('./ router/user') const page =require('./ router/page') Must be written in the top app. All (' * '(the req, res, next) = > {next ()}) / / homepage routing app. Get ('/', (req,res) => { res.sendFile(__dirname+'/'+'index.html') }) app.all('/', (req, res) => { pool.getConnection((err, conn) => { res.json({ type: 'test'}) pool.ReleaseConnection (conn) // Release the connection pool, })}) app.use('/user', user) app.use('/page', page) () => {console.log(' service start ','localhost:8088')})

6. Start the service

node index.js