可以从节点获取数据,但不能使用postgres从命令行获取数据

时间:2016-09-28 13:42:51

标签: node.js postgresql

我创建了一个名为alpha的表和一个名为'event'的alpha表。我可以在事件表中添加一行,并从节点中的事件表中检索所有行。但是当我在命令行中尝试时,当我选择全部时,我得到一个“空白”。

命令行(没有看到任何行):

(master U:1 ✗) happy psql alpha
psql (9.4.4)
Type "help" for help.

alpha=# psql \dt
          List of relations
 Schema | Name  | Type  |   Owner    
--------+-------+-------+------------
 public | event | table | pgOwner
(1 row)

alpha-# select * from event
alpha-# 

节点代码(显示行):

let promise = require('bluebird');
let moment = require('moment');

let options = {
  // Initialization Options
  promiseLib: promise
};

let pgp = require('pg-promise')(options);
let connectionString = 'postgres://localhost:5432/alpha';
let db = pgp(connectionString);

// add query functions
function getAllEvents(req, res, next) {
  db.any('select * from event')
    .then(function (data) {
      res.status(200)
        .json({
          status: 'success',
          data: data,
          message: 'Retrieved ALL events'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}

function addEvent(req, res, next) {
  // let date = moment(new Date()).format('MMMM Do YYYY, h:mm A');
  db.none('insert into event(firstName, lastName, eventDate, emotion, answer)' +
      'values(${firstName}, ${lastName}, ${emotion}, ${emotion}, ${answer})',
    req.body)
    .then(function () {
      res.status(200)
        .json({
          status: 'success',
          message: 'Inserted one event'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}


module.exports = {
  getAllEvents: getAllEvents,
  addEvent: addEvent,
};

enter image description here

1 个答案:

答案 0 :(得分:5)

As documented in the manual

  

在提示符下,用户可以键入SQL命令。通常,当命令终止分号时,输入行将被发送到服务器。行尾不会终止命令。

换句话说,您必须使用;结束每个语句,而不是通过驱动程序执行查询,当您使用单个请求执行多个查询时,只需要;(你通常不会这样做。)