【问题标题】:Having some issues in express get request在快速获取请求中遇到一些问题
【发布时间】:2013-07-15 04:43:45
【问题描述】:

我使用 node.js 和 postgresql 创建了一个应用程序,以根据请求的用户 ID 显示用户城市。如果我在浏览器中的(localhosthost:7070/user/userId/city)中点击此 URL 意味着使用快速获取请求我正在调用方法以使用请求的用户 ID 从数据库中获取请求的用户城市。我得到了正确的输出,没有任何问题。但我面临着其他一些问题。

问题

首先在浏览器中点击 localhost:7070/user/1/city URL 意味着它给出了输出结果也显示在我的页面中。但是如果我再次在浏览器中点击 localhost:7070/user/2/city URL 意味着我没有收到任何错误和任何输出,但我的页面总是在加载。因此,如果我想为其他用户执行此操作,则意味着我必须重新启动我的节点服务器。然后只有它可以工作。任何人都可以帮助我确切的问题是什么.

这里我附上了我的代码...

server.js

var pg = require('pg'); 
var conString =require('./config');
var client = new pg.Client(conString);
var queryModule=require('./query');
var express=require('express');
var app=express();
app.use(express.static(__dirname + '/public'));
app.listen(7070);

console.log('Server started at port 7070.');
app.get('/user/:id/city',function(req, response){
    client.connect(function(err, result){
        if(!err){
            var userId=req.param('id');
            queryModule.findCityByUserId(client,userId,function(err,res){
                if(!err){
                    console.log('done');
                    response.send('Requested user city is '+res);
                    return;
                }
                console.log('Error while finding the city of the user ' + err);
            });
        } else {
            console.log('error while connecting client '+err);
        }
    });
 });

query.js

 function Query(){
 }

module.exports=Query;

Query.findCityByUserId = function(client, id, cb){
    client.query("SELECT city FROM userinfo WHERE id=" + id, function(err,res){
        if(err){
            return cb(err);
        }
        client.end();
        var row = res.rows['0'];
        console.log("row length: " + res.rows.length);
        Object.keys(row).forEach(function(key){
            cb(null, row['city']);
        });
    });
};

【问题讨论】:

  • 似乎缺少的一件事是,如果您要求数据库中尚不存在的用户,则您不会只返回一个 console.log("Error while ...."); , 如果你没有进一步的代码,你需要在这里给用户一个响应,否则浏览器将冻结很长时间等待永远不会返回的响应。
  • @Todilo im 检查现有用户的记录..
  • 尝试将 conString 传递给client.connect。我认为在调用 client.end 之后它会被用作默认值。
  • @user568109 我已经尝试过,但这不起作用,因为 findCityByUserId 方法没有在第二次调用..在重新启动节点服务器后再次调用,只有该方法正在调用..

标签: node.js express postgresql-9.1


【解决方案1】:

我刚刚开始使用节点。

问题可能是你没有用 res.end(); 结束你的响应

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多