谁帮我写下nodejs POST收发模块

做POST数据收发,同时需要调用MYSQL数据库数据做对比,并修改保存数据到MYSQL数据库,在一个模块或几个模块都行,假定IP为111.222.222.111,数据库用... 做POST数据收发,同时需要调用MYSQL数据库数据做对比,并修改保存数据到MYSQL数据库,在一个模块或几个模块都行,假定IP为111.222.222.111,数据库用户:root,密码:123456,数据库为:aaa,忘会的高手指点一二。对这个真心不懂,先谢谢大家了!!var http = require('http');var querystring = require('querystring'); http.createServer(function (req, res) { var body = ""; req.on('data', function (chunk) { body += chunk; }); req.on('end', function () { // 解析参数 body = querystring.parse(body); var sbid = body.id; var sbzt = body.zhuangtai; var sbdz = body.dongzuo; var sbyz = body.yanzhen; var sbbj = body.biaoji; var sbbj1 = body.biaoji1; var sbwd = body.wendu; // 设置响应头部信息及编码 res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'}); var student = new Object(); student.xid = "000"; student.xyanzhen = "qqq001"; student.xdongzuo1 = "kai"; var jj23 = JSON.stringify(student); if(sbid === "001", sbyz === "yaokong" ) { // 输出提交的数据 //res.write("skk:" + "kai"); res.write(jj23); // res.write("skk2:" + "guan"); } else { // 输出表单 res.write("cuowu_daima"); } res.end(); });}).listen(8124);这个是我在网上找的,可是不知道怎么把数据库的数据引入到这里,也不知道怎么把接收到的数据写入数据库。 展开
 我来答
青橙千人斩
2017-12-06 · TA获得超过101个赞
知道小有建树答主
回答量:126
采纳率:42%
帮助的人:47.7万
展开全部

0、你的需求不是很明确,你的数据库是什么,收到数据后做什么,发送的又是什么数据,什么时候取数据库数据,什么时候存数据库数据,这些你自己理清楚,下面的代码变化下位置,应该是可以满足你的需求的。

1、npm install mysql //nodejs操作mysql数据库的包网页链接

npm install async //nodejs控制同步异步的包网页链接

npm install request  //nodejs对http进行封装后的包,比http更好用网页链接

2、下面的思路是:从mysql数据库取出数据 --> 将数据库数据和你的某个数据进行对比 --> 将对比结果发送到指定地址

var mysql      = require('mysql');

var async       = require('async');

var request    = require('request ');

var connection = mysql.createConnection({

host     : 'localhost',

user     : 'root',

password : '123456',

database : 'aaa'

});

connection.connect();

connection.query('SELECT  data FROM tableA', function (error, results, fields) {

if (error) throw error;

var data = results[0];//自己可以打印result看看是什么,有助于你使用。

console.log('The data is: ', data);

async.auto({//

checkDifferent: function (cb) {

//checkDifferent函数进行数据对比,具体怎么对比看你的需求了,再将对比后的数据往下一个函数传递,具体内容参考async库的作用。

cb(null, differentData);

},

postData: function (result, cb) {//发送数据

var differentData = result.checkDifferent//即上个函数得到对比数据

request.post('你的数据即将的URL', {

formData: {

"data": differentData //这里是简单的例子,具体是否需要headers或者Auth验证看你自己需求,使用方式,例子,上面都给了网址。

},

json: true,

}, function (err, res, body) {

console.log(body);

return;

});

}

})

});

connection.end();

3、接收数据需要建立服务器,不清楚你现在是用什么框架,这里用express做例子。

(1)express的安装、使用方式自行百度

(2)

app.use('/', routes);//即接收到上面2中的post数据后,在routes中进行数据处理(保存)

(3)保存数据到数据库

此时我们已经利用express,建立了服务器,并接收到了数据,数据库保存跟上面2中的查询数据是一样的,只是数据库语句变成INSERT INTO tableA SET   XXX,

var mysql = require('mysql');

var pool  = mysql.createPool({

connectionLimit : 10,

host     : 'localhost',

user     : 'root',

password : '123456',

database : 'aaa'

});

pool.query('INSERT INTO tableA SET   XXX', function (error, results, fields) {

if (error) throw error;

console.log(results[0]);

});

4、希望对题主有启发

追问
谢谢您的回答,不过我还是没弄懂。假如客户端访问的这个文件名为app.js监听端口8001,我需要在if()那里对比数据库中某一字段的数据(假定为:ID_1),或者说客户端post提交的数据中的一组变量在数据库中存在不,如果存在就把post传递的其他的数据保存在数据库里,并且发送数据库里另外的数据给客户端,对于数据库的操作我在单独的JS文件里能实现,就是不明白在app.js里应该怎么使用。望指导!
玩转数据处理
2017-12-06 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
var http = require("http");
var url = require("url");
var querystring = require("querystring");
var fs = require("fs");

var headerData = {"Content-Type": "text/plain;charset=utf-8"};

var handle = {}
handle["/"] = index;
handle["/get"] = get;
handle["/login"] = loginAction;

function query(response,userName,password) {
// GET 方法 数据库连接查询操作

// SELECT * FROM ... 

// ......

    response.writeHead(200, headerData );
    response.write(text);
    response.end();
}

function renderPage(response) {
  console.log("login");
  var data  = '<html><head><meta charset="utf-8"></head><body><form action="/login" method="post">用户名:<input value="" name="name">密码:<input value=""  name="pwd"><input type="submit" value="提交"></form></body><html>';
  response.write(data);  
  response.end();  
}

function get(query, request, response) {
  console.log("query: " + query);
  var queryObj = querystring.parse(query);
  for (key in queryObj) {
    console.log("key: " + key + ", value: " + queryObj[key]);
  }
  var type = queryObj["type"];
  switch(type) {
    case "login":
      renderPage(response);
      break;
    case "query":
      var userName = queryObj["userName"];
     var password = queryObj["password"];
      query(response,userName,password);
      break;
    default:
      var text = "参数不正确!";
      response.writeHead(200, headerData );
      response.write(text);
      response.end();
      break;
    }
}

function loginAction(query, request, response) {
  var  postdata  =  '';   
  request.on('data',  function(chunk){     
      postdata  +=  chunk;      
  });        
  request.on('end',  function(){      
      postdata  =  querystring.parse(postdata);
      response.writeHead(200, headerData);
      //*** POST方法 数据库连接查询操作
      if(postdata['name']=="fff"&&postdata['pwd']=="123"){
        response.write("登录成功!")
      }else{
        response.write("用户名密码不正确")
      }
      response.end();  
     //*** ...END...
  });  
}

function index(query, request, response) {
    console.log("Hello World");
    response.writeHead(200, headerData );
    response.write("Hello World");
    response.end();
}

function route(pathname, query, handle, request, response) {
    console.log("route for " + pathname);
    if (typeof handle[pathname] === 'function') {
        handle[pathname](query, request, response);
    } else {
        response.writeHead(404, {"Content-Type": "text/plain"});
        response.write("404 not found");
        response.end();
    }
}

function onRequest(request, response) {
    var urlObj = url.parse(request.url);
    var pathname = urlObj.pathname;
    var query = urlObj.query;
    route(pathname, query, handle, request, response);
}

http.createServer(onRequest).listen(8888);
console.log("Server has started.");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式