node.js - 可以从 Node 获取数据,但不能使用 postgres 命令行

标签 node.js postgresql

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

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

(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-# 

Node 代码(显示行):

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

最佳答案

As documented in the manual

At the prompt, the user can type in SQL commands. Ordinarily, input lines are sent to the server when a command-terminating semicolon is reached. An end of line does not terminate a command.

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

关于node.js - 可以从 Node 获取数据,但不能使用 postgres 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39749320/

相关文章:

javascript - 监控谁在线?

Node.js:如何使用异步模块执行无限循环

node.js - Sequelize setter 错误 'invalid input syntax for integer: "[对象对象]"'

postgresql - SequelizeJS 中的自定义 Postgresql 序列 Nextval

使用凭据 token 的 Node.js 谷歌云存储身份验证

javascript - NPM、Supervisor 和 Nohup 在 shell session 之间退出

sql - PostgreSQL 从 JSONB 数组中选择特定项目

postgresql - 如何在 psql 中获取多个函数?

postgresql - 允许任何用户以完全权限连接到 postgres 吗?

sql - 在 PostgreSQL View 上插入或更新