使用data和end事件来获取post数据,代码如下:
var http = require('http')var server = http.createServer()
var querystring = require('querystring')
var firstPage = function(res){
res.writeHead(200, {'Content-Type': 'text/html'})
var html = '<html><body>'+
'<form action="/login" method="post">'+
'name:<input type="text" name="name"> </br>'+
'password:<input type="password" name="pwd"></br>'+
'<input type="submit" value="login">'+
'</form>'+
'</body></html>'
res.end(html)
}
var login = function(req, res) {
var info =''
req.addListener('data', function(chunk){
info += chunk
})
.addListener('end', function(){
info = querystring.parse(info)
if(info.name == 'a' && info.pwd =='1'){
res.end('login success ' + info.name)
}else{
res.end('login failed ' + info.name)
}
})
}
var requestFunction = function (req, res){
if(req.url == '/'){
return firstPage(res)
}
if(req.url == '/login'){
if (req.method != 'POST'){
return
}
return login(req, res)
}
}
server.on('request',requestFunction)
server.listen(1337, "127.0.0.1")
console.log('Server running at http://127.0.0.1:1337/')
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、希望对题主有启发
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)