有效的Postgres查询总是返回undefined

时间:2016-01-12 15:19:48

标签: postgresql sails.js pgadmin

我正在使用sails来构建API,我的一个函数需要从我的PGSQL数据库中获取列。当我在PGadmin中测试它时,我的SQL请求正在工作,它看起来像这样:

SELECT "user".id, "user".picture, "user".first_name, "trophe".trophe FROM "user" INNER JOIN "trophe" ON "trophe".user  = "user".id WHERE "trophe".foot = 1

当我在我的sails API中转录此请求时,它看起来像这样:

  getHommeAndChevre: function (req, res) {
    console.log(req.param("id"));
    Trophe.query("SELECT 'user'.id, 'user'.picture, 'user'.first_name, 'trophe'.trophe FROM 'user' INNER JOIN 'trophe' ON 'trophe'.user = 'user'.id WHERE 'trophe'.foot ="+req.param('id'), function(err,trophes){
      if(!trophes) {return res.status(400).end();}
      if(trophes){
        _each(trophes, function(trophe){
          if (trophe.trophe == 0) {var chevre = trophe};
          if (trophe.trophe == 1) { var homme = trophe};
        })
       return res.status(200).json({chevre: chevre, homme: homme})
      }
    });
  }

无论我做什么,Trophe.query总是返回undefined。这可能有什么问题?

2 个答案:

答案 0 :(得分:1)

您的返回是在回调之外,因此您在查询结束之前返回该值。

_each(trophes, function(trophe, index){
      if (trophe.trophe == 0) {var chevre = trophe};
      if (trophe.trophe == 1) { var homme = trophe};
      if (index == trophes.length - 1) //End of the loop
          return res.status(200).json({chevre: chevre, homme: homme});
})

答案 1 :(得分:0)

为标识符使用双引号

Trophe.query('SELECT "user".id, "user".picture, "user".first_name, ...