2016-09-28 45 views
2

我创建了一个名为alpha的表和一个名为'event'的alpha表。我可以将一行添加到事件表中,并从节点中的事件表中检索所有行。但是,当我在命令行中尝试时,我选择全部时会出现“空白”。可以从节点获取数据,但不能使用命令行使用postgres

命令行(未看到任何行):

(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

+2

您需要在'psql'中用';'结束语句:'select * from event;' –

+0

@a_horse_with_no_name有效!你可以把它写成答案,以便我可以将其标记为正确的? –

回答

5

As documented in the manual

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

换句话说,你必须结束与;每个语句,而相比之下,通过驱动程序,只需要;当你与一个请求执行多个查询(你通常不会执行查询做它)。

+0

@ vitaly-t:你的加入只是部分正确。例如JDBC驱动程序_does_允许发送多个用';'' –

+0

分隔的语句,已更正。 –

相关问题