Node.js 在服务器中执行数据库查询的Express 我想知道ExpressJS在服务器端是如何工作的

Node.js 在服务器中执行数据库查询的Express 我想知道ExpressJS在服务器端是如何工作的,node.js,express,Node.js,Express,我需要一些服务器端的信息,据我所知,主要是 ExpressJS可以执行PHP的所有功能---是吗 是吗 我的客户端(Android)已准备好向服务器提交POST请求 如果我能以(键、值)对的形式发送一条信息, Express可以接受这对吗?基于键识别值 并且,根据接收到的值对数据库执行sql查询 来自android客户端 如果可以,它是如何做到的 我的Express程序(它给出了一个响应,没有上面解释的场景-如何修改此程序) 希望我清楚 谢谢,您可以通过查询参数或作为url路径的一部分发送信

我需要一些服务器端的信息,据我所知,主要是

  • ExpressJS
    可以执行PHP的所有功能---是吗 是吗
  • 我的客户端(Android)已准备好向服务器提交POST请求
  • 如果我能以
    (键、值)对的形式发送一条信息
    , Express可以接受这对吗?基于键识别值 并且,根据接收到的值对数据库执行
    sql查询
    来自android客户端
如果可以,它是如何做到的

我的Express程序(它给出了一个响应,没有上面解释的场景-如何修改此程序)

希望我清楚
谢谢

您可以通过查询参数或作为url路径的一部分发送信息。如果将其作为查询参数发送,则可以使用

req.query.keyName;
如果要将该值作为url的一部分发送,则必须添加一个路由来接受该值。您可以使用
:keyName
表单接受url中的可变内容。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,但我确信有某种方法可以使用参数化查询。希望这对你更有帮助


另外,我假设数据将在请求正文中传递,因为您说您已经准备好向服务器发送。

“函数(req,res,next)”。。。。。引用前两个是请求和响应。。。。。你提到的“下一步”是什么。。。。。。您还可以编辑问题中提出的程序。。。用你的解决方案。。。。它将为新手提供更清晰的信息,ThanksAll express route handler Callbacks接受三个参数——请求对象、响应对象和附加回调。如果要匹配多条路线,可以使用
next
。如果每个请求都有全局路由处理程序(如身份验证),这将非常有用。在这些处理程序的末尾,您只需调用
next()
next(err)
(如果有错误并且您有错误处理程序中间件)控件传递给下一个匹配的路由或处理程序。我没有使用原始代码,因为代码或post不清楚服务器需要什么键/值对,或者数据库将如何使用这些键/值对。我想我可以弥补,但它仍然比任何东西都更具代表性。好的,谢谢你提供的清晰,所以。。。我认为代码必须是app.get(-------------{var keyName=req.params.keyValue;});对吧。。。。。。。。。因为我们需要通过借助KeyName
KeyName
进行提取来匹配基于KeyValue的条件,这只是一个例子。你用路上的任何东西。例如:
app.get('/restaurant/:id',function(req,res,next){…})
然后使用
req.params.id
app.get('/restaurant/:name',function(req,res,next){…})
访问它非常方便。如果您还没有查看express上的文档,我会在上面链接到它。它能告诉你比我在一篇600字的评论中能告诉你的多得多。
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'));
});