node.js怎么接收post

node.js怎么接收post,第1张

使用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、希望对题主有启发


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9938483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存