0

我有一段 Express 代码

下面我要做的是通过从请求中提取将表名传递给keyName

但我正面临死锁

我想知道我是否遵循 JSON 响应的正确协议

[部分快递代码]

app.get('/RestaurantDesc/:Key',function(request,response,next){

    var keyName=request.query.Key;
    var name_of_restaurants, RestaurantTimings;
    async.series( [
        // Get the first table contents
        function ( callback ) {
            connection.query('SELECT * FROM ',keyName, 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
    });
} );
} );

我得到的输出不能GET /RestaurantDesc/

有任何想法吗

4

2 回答 2

1

如果您收到“Cannot GET /RestaurantDesc/”是因为您没有设置此路由,请尝试/RestaurantDesc/something. request.query 用于搜索词,即 url 中的 questionmaek 之后的内容。请改用 request.param.Key。

此外,为了获得最佳实践,您应该小写资源名称并使用较短的 req/res 而不是 request/response。

于 2013-08-29T18:00:18.477 回答
1

您的路线应该是路径,您可以通过 GET 请求访问的路径。例如:您应该能够通过

http://example.com/RestaurantDesc/anyKeyHere

在你的代码中你有

var keyName = request.query.Key

req.query 包含查询变量见http://expressjs.com/api.html#req.query

所以你的 keyName 变量不会包含 anyKeyHere。

req.params.Key 将包含值 anyKeyHere;

但您需要在 url 路径中传递它。

如果您需要在查询中传递关键数据,您可以这样做。

app.get('/RestaurantDesc',function(request,response,next){
   var keyName=request.query.Key;
 });

并在您的网址中传递这样的密钥

http://example.com/RestaurantDesc/?Key=restaurnetkeyHere

尝试通过快速站点中的指南并了解路线及其工作原理。

于 2013-08-30T04:05:46.363 回答