前端express框架,使用mongodb或者mysql连接数据库

310 阅读1分钟

一、express+mongodb

安装:npm i mongoose -S

mongodb下载地址:https://www.mongodb.com

mongodb/connect.js

var mongoose = require("mongoose");
var hostname = "localhost";
var port = 27017;
var dbName = "test";
var user = "?";
var pwd = "?";

var db_conn_url = `mongodb://${hostname}:${port}/${dbName}`;

mongoose.connect(db_conn_url, (err) => {
  if (err) {
    console.log("数据库连接失败");
    console.log(err);
    throw err;
  }
});

var conn = mongoose.connection;

conn.on("open", () => {
  console.log("open--数据库正在连接");
});
conn.on("connected", () => {
  console.log("connected--连接成功");
});
conn.on("disconnected", () => {
  console.log("disconnected--断开连接");
});
conn.on("error", (err) => {
  console.log("数据库连接失败" + err);
});

app.js

require("./mongodb/connect");

mongodb/model.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

// 表结构
var user_schema = new Schema({
  id: String,
  username: String,
  nickname: String,
  tag: Array,
  phone: Number,
  password: String,
});
// 表模型
exports.user_model = mongoose.model("users", user_schema);

routes/index.js

var express = require("express");
var router = express.Router();
const { user_model } = require("../db/model");
router.get("/", function (req, res, next) {
  res.render("index", { title: "Express" });
});
// 查
router.get("/getUserInfo", (req, res) => {
  user_model
    .find()
    .then((result) => {
      res.json({
        code: 200,
        massage: "添加成功",
        data: result,
      });
    })
    .catch((error) => {
      console.log(error);
      res.json({
        code: 500,
        massage: "服务器异常,请稍后重试",
      });
    });
});

// 增
router.get("/addUserInfo", async (req, res) => {
  var query = req.query;
  user_model
    .insertMany(query)
    .then((res) => {
      res.json({
        code: 200,
        massage: "数据添加成功",
      });
    })
    .catch((error) => {
      console.log(error);
      res.json({
        code: 304,
        massge: "服务器异常,请稍后重试",
      });
    });
});

// 删
router.get("/delUserInfo", (req, res) => {
  var query = req.query;
  user_model
    .deleteOne(query)
    .then((result) => {
      res.json({
        code: 200,
        message: "数据删除成功",
      });
    })
    .catch((error) => {
      console.log(error);
      res.json({
        msg: 500,
        message: "服务器异常,请稍后重试",
      });
    });
});

// 改
router.get("/updateUserInfo", (req, res) => {
  var _id = req.query._id;
  console.log(req.query);
  user_model
    .updateOne({ _id }, { $set: req.query })
    .then((result) => {
      console.log(result);
      res.json({
        code: 200,
        message: "数据更新成功",
      });
    })
    .catch((error) => {
      console.log(error);
      res.json({
        code: 500,
        mesage: "服务器异常,请稍后重试",
      });
    });
});

module.exports = router;

二、express+mysql

安装:npm i mysql -S

小皮服务器下载地址:https://www.xp.cn/

image.png

image.png

mysql/db.js

var mysql = require("mysql");
var db = mysql.createConnection({
  host: "localhost",
  user: "root", // 数据库用户名
  password: "root", // 数据库密码
  database: "databasename", 
});
db.connect();

module.exports = db;

routes/users.js

var express = require("express");
var router = express.Router();
var db = require("../mysql/db");

// 查
router.get("/", function (req, res) {
  var limit = 2;
  var params = { a: 1 };
  // var params = {};
  var sql = "select * from users where ? limit ?";
  // 如果对象为空,则去掉'where',避免报错
  if (Object.keys(params).length === 0) {
    sql = sql.replace(/[\s]where{1}/g, "");
  }
  db.query(sql, [params, limit], (error, data) => {
    if (error) throw error;
    res.json({
      code: 200,
      msg: "获取成功",
      data,
    });
  });
});

// 改
router.get("/update", (req, res) => {
  var params = { id: 3, username: "张三123", age: 23 };
  var query = { id: params?.id };
  var sql = "update users set ? where ?";
  db.query(sql, [params, query], (error, data) => {
    if (error) throw error;
    res.json({
      code: 200,
      msg: "更新成功",
      data,
    });
  });
});

// 增
router.get("/insert", (req, res) => {
  var params = { username: "王五", gender: "男", age: 28 };
  var sql = "insert into users set ?";
  // 只有一个问号时,可以把[params],简化为params
  db.query(sql, params, (error, data) => {
    if (error) throw error;
    res.json({
      code: "200",
      msg: "插入成功",
      data,
    });
  });
});

// 删
router.get("/delete", (req, res) => {
  params = { id: 4 };
  var sql = "delete from users where ?";
  db.query(sql, [params], (error, data) => {
    if (error) {
      throw error;
    }
    res.json({
      code: 200,
      msg: "删除成功",
      data,
    });
  });
});

module.exports = router;