谁帮我写下nodejs POST收发模块
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里应该怎么使用。望指导!
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.");