我需要有关服务器端的一些信息,根据我的知识,主要内容是
ExpressJS
可以执行PHP的所有功能主义者 - 是 - 它
是吗?(Key,value) pair
的形式发送一条信息,
Express可以接受该对 - 根据密钥识别值
并根据收到的值对数据库执行sql query
来自android客户端?如果可以的话呢?
MY Express程序(它提供了一个没有上述情况的响应 - 如何修改此程序)
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: '*********',
password: "*****",
database: 'DB'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 7002);
//
//REQUEST FOR FIRST REQUEST
//
app.get('/',function(request,response){
var name_of_restaurants, RestaurantTimings;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM restaurants', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});
},
// Get the second table contents
function ( callback ) {
connection.query('SELECT * FROM RestaurantTimings', function(err, rows, fields)
{
console.log('Connection result error '+err);
RestaurantTimings = rows;
callback();
});
}
// Send the response
], function ( error, results ) {
response.json({
'restaurants' : name_of_restaurants,
'RestaurantTimings' : RestaurantTimings
});
} );
} );
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
希望我很清楚 谢谢,
答案 0 :(得分:0)
您可以通过查询参数或作为网址路径的一部分发送信息。如果您将其作为查询参数发送,则可以使用
进行访问req.query.keyName;
如果您想将该值作为网址的一部分发送,则您必须添加一个接受该路由的路由。您可以使用:keyName
表单接受网址中的可变内容。 Express将在req.params中捕获它。所以它看起来有点像这样:
app.get('/some/url/:keyName', function(req, res, next){
var keyName = req.params.keyName;
// . . .
});
然后,您可以将您的http请求发送到' / some / url / someKeyValue'变量keyName
将等于你在/ some / url /.
如果您在请求正文中发布数据,请使用req.body.keyName
访问该数据。
编辑:这是尝试使用原始代码。请注意,我仍在编造价值并猜测其意图是什么。
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: '*********',
password: "*****",
database: 'DB'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 7002);
//
//REQUEST FOR FIRST REQUEST
//
app.get('/',function(request,response){
var name_of_restaurants, RestaurantTimings;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM restaurants WHERE name = ' . request.body.name, function(err, rows, fields) {
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});
},
// Get the second table contents
function ( callback ) {
connection.query('SELECT * FROM RestaurantTimings', function(err, rows, fields) {
console.log('Connection result error '+err);
RestaurantTimings = rows;
callback();
});
}
// Send the response
], function ( error, results ) {
response.json({
'restaurants' : name_of_restaurants,
'RestaurantTimings' : RestaurantTimings
});
} );
} );
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
但是你不应该因为SQL注入而直接查询。我从未在节点上使用MySQL,但我确定有一些方法可以使用参数化查询。希望这更有帮助。
此外,我假设数据将在请求正文中传递,因为您说您已准备好POST到服务器。