【问题标题】:Simple Express program for querying a result用于查询结果的简单 Express 程序
【发布时间】:2013-08-29 15:38:46
【问题描述】:

我有一个 Express 代码的 sn-p

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

但我正面临死锁

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

[Part-of-Express-Code]

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/

任何想法

【问题讨论】:

  • 您是否正在传递 :Key 输入您的 Get 请求?
  • 我将(键,值)对作为(键,Aroy)从客户端传递.....所以我试图将 Aroy 存储在变量中并根据值传递给查询生成 json 响应

标签: mysql node.js express


【解决方案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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • reqrequest 完全基于意见。仅仅因为大多数示例代码使用req 并不意味着它符合您的其他命名约定。我认为“最佳实践”只是在您的代码库中保持一致。在我上一个组织中,我们更喜欢一般不是缩写的参数,所以我们使用了requestresponse,因为它们对我们来说是一致的,并且更容易让人一眼就不会混淆两者。
  • b/w request.queryrequest.param 的主要区别是什么......如果客户端将请求作为(键,值)对发送到服务器...... . 服务器应该如何处理它.... 我应该使用request.query 还是request.param
  • req.query 用于匹配 url 中问号之后的键/值对,例如 www.mydomain.com/somepath?myquery=test。 myquery 是测试的关键是值。您需要使用参数,因为您的网址不包含查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多