node.js接数据库踩坑 增删改查

var express = require('express');
var app = express();
var mysql = require('mysql');
var async = require('async');
var questions = [
   {
      msg: "",
      data: [{
      }]
   }];
//数据库配置
var connection = mysql.createConnection({
   host: 'localhost',
   user: 'root',
   password: '123456',
   database: 'test_bd'
});
//设置跨域访问
app.all('*', function (req, res, next) {
   res.header("Access-Control-Allow-Origin", "*");
   res.header("Access-Control-Allow-Headers", "X-Requested-With");
   res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
   res.header("X-Powered-By", ' 3.2.1');
   res.header("Content-Type", "application/json;charset=utf-8");
   next();
});
//初始化接口数据
function initdata() {
   questions = [
      {
         msg: "",
         data: [{
         }]
      }];
}
//封装一些操作接口数据的函数
function setmsg(newmsg) {
   console.log(newmsg)
   questions[0].msg = newmsg;
}
function setdata(newdata) {
   newdata = JSON.stringify(newdata)
   // newdata = Object.getOwnPropertyNames(newdata)
   questions[0].data[0] = newdata;
}
//打开利连接
function startcon() {
   connection.connect(function (err) {
      if (err) {
         console.log("[query]-:" + err);
         return;
      }
      console.log("[connection connect] succeed!");
   })

}
//关闭连接
function endcon() {

   connection.end(function (err) {
      if (err) {
         return;
      }
      console.log("[connection end] succeed!")
   })

}
//POST   给sql,res返回   失败返回错误信息到msg、成功返回msg scueed,data:null
async function Postmakesql(sql, res) {
   console.log("@@sql@@" + sql)
   async.series([
      function (callback) {
         // 插入    posts
         console.log("开始插入数据");
         connection.query(sql, function (err, result) {
            console.log("进入数据接入");
            if (err) {
               console.log("数据插入异常");
               setmsg(err.sqlMessage);
               callback(err);
            }
            else {
               console.log(result);
               console.log("数据插入成功");
               setmsg("succeed");
               callback(result);
            }
         });
      },
   ], function (err, results) {
      res.status(200),
         res.json(questions);
      console.log(sql + "完成");
   });
}
//GET   给sql,res返回   失败返回错误信息到msg、成功返回msg scueed,data:data
async function Getmakesql(sql, res) {
   console.log(sql)
   async.series([
      function (callback) {
         // 插入    posts
         console.log("开始插入数据");
         connection.query(sql, function (err, result) {
            console.log("进入数据接入");
            if (err) {
               console.log("数据插入异常");
               setmsg(err);
               callback(err);
            }
            else {
               console.log(result);
               console.log("数据插入成功");
               if (result.length == 0)
               {
                  setmsg("没有相应数据");
               setdata(null);}
               else
               setdata(result);
               callback(result);
            }
         });
      },
   ], function (err, results) {
      res.status(200),
         res.json(questions);
      console.log(sql + "完成");
   });
}




接口
//查
app.get('/find', function (req, res) {
   //可以所有  可以单个 todo
   initdata();
   var sql = 'SELECT * FROM user';
   //按照名字查
   if (req.query.name) {
      var sql = 'SELECT * FROM user WHERE user_name=' + req.query.name;
      Getmakesql(sql, res)
      return;
   }
   //查所有
   Getmakesql(sql, res)
});

//添加
app.get('/add', function (req, res) {
   initdata();
   if (!req.query.name) {
      setmsg("name null");
      res.status(200);
      res.json(questions);
   }
   else if (!req.query.password) {
      setmsg("password null");
      res.status(200);
      res.json(questions);
   }
   else {
      var sql = 'INSERT INTO user(user_name,user_password) VALUES(' + req.query.name + "," + req.query.password + ')';
      Postmakesql(sql, res)
   }
});

//改
app.get('/modify', function (req, res) {
   initdata();

   if (!req.query.name) {
      setmsg("name null");
      res.status(200);
      res.json(questions);
   }
   else if (!req.query.password) {
      setmsg("password null");
      res.status(200);
      res.json(questions);
   }
   else {
      var name = req.query.name;
      var newpassword = req.query.password;
      var sql = 'UPDATE user  SET user_password=' + req.query.password + ' WHERE user_name=' + req.query.name;
      //行为
      Postmakesql(sql, res);
   }
});
//删除
app.get('/delete', function (req, res) {
   initdata();
   if (!req.query.name) {
      setmsg("name null");
      res.status(200);
      res.json(questions);
   }
   else {
      var name = req.query.name;
      var sql = "DELETE FROM user WHERE user_name=" + req.query.name;
      //行为
      Postmakesql(sql, res);
   }
});


//
//配置服务端口
var server = app.listen(8080, function () {

   var host = server.address().address;

   var port = server.address().port;

   console.log('Example app listening at http://%s:%s', host, port);
})


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值