Nodejs随机查询

时间:2014-11-28 15:25:08

标签: ajax node.js postgresql express

我正在尝试使用ajax从我的本地数据库中获取一个随机项目。我第一次执行ajax请求时,我得到一个随机项,之后每个ajax请求返回相同的项目。

 var express = require('express')
var app = express();
var customers = require('./module');
var pg = require('pg');
var conString = "postgres://postgres:pass@localhost/test";
var client = new pg.Client(conString);



app.get('/res', function(req, res) {


client.connect(function(err) {
          if(err) {
            return console.error('could not connect to postgres', err);
          }
          client.query('SELECT * FROM t_items OFFSET random()*300 LIMIT 1', function(err, result) {
            if(err) {
              return console.error('error running query', err);
            }
            console.log(result.rows[0]);

              res.contentType('json');
              res.send({ some: result.rows[0] });


             client.end();
          });
    });
});


app.set('view engine', 'jade');
app.use(express.static(__dirname + '/public'));
app.set('port', (process.env.PORT || 5000))
app.use(express.static(__dirname + '/public'))

app.get('/',function(req, res){


    res.render("index");
});

app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'))
})

如果我尝试将其包装在app.post('/ req')中.... 我得到无法连接到postgres [错误:连接终止] 我尝试过使用客户端池,但仍然存在同样的问题

1 个答案:

答案 0 :(得分:0)

只需在app.get函数中移动您的查询(' / res',函数(req,res)

发生这种情况是因为db查询只执行一次。为了防止它 - 将你的代码移到/ res路由中,它将在每次请求时执行。