Articles of node postgres

为什么这个蓝鸟PG代码挂起?

我试图围绕蓝鸟诺言包裹头,并通过文档中的一些例子。 我目前的代码是基于这个例子 : var Promise = require('bluebird'); var pg = Promise.promisifyAll(require('pg')); var using = Promise.using; function getConnection(string) { var close; return pg.connectAsync(string).spread(function(client, done) { close = done; return client; }).disposer(function() { console.log('In disposer'); try { if (close) close(); } catch(e) {}; }); }; using(getConnection('/var/run/postgresql dc'), function(conn) { console.log('Got a connection'); return conn.queryAsync('SELECT 1'); }) .then(function(rows) […]

PG似乎并没有正确closures连接

我正在编写一个使用Node.js和postgresql的应用程序。 当用户validation它击中数据库来检查用户的密码,然后应该closures连接到数据库。 但是,如果用户input了错误的密码并再次尝试进行身份validation,则在服务器控制台上出现此错误: UNCAUGHT EXCEPTION… { [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' } Error: write EPIPE 我相信它不是第一次正确closures连接。 这是应该closures连接的脚本的一部分: query.on('end', function(){ client.end(); if (pass == this.dbpass){ console.log(pass); console.log(this.dbpass); return callback (200, "OK", {}, true); } else { console.log(pass); return callback(200, "OK", {}, false); } }); 有没有另一种方法来closures我不知道的连接?

postgres中的大量数据库 – 架构最佳实践

我们在多租户nodejs中使用postgres进行设置。 每个客户端都有一个单独的数据库(和一个单独的节点进程)。 使用node-postgres模块为每个租户实施连接池。 由于数据库数量越来越多,我们很快就达到了postgres的max_connections限制。 无限增加max_connections不是一个选项(由于连接开销)。 大量数据库的体系结构是否应该改变? 任何指针将不胜感激。

什么时候应该在node-postgres中调用done()?

第4.4.3节 我正在使用socket.io连接客户端到服务器。 我猜想,我想在服务器启动时将服务器连接到数据库,但在“docs”中有很多警告:“使用done()或者坏事情会发生”。 我应该什么时候使用它? 如果我打开数据库的连接,然后在其中创buildsocket.io服务器,然后在每个查询后使用done() ,然后我30秒后收到错误空闲: Error: This socket has been ended by the other party 可能是我应该创buildsocket.io,然后在每个用户会话中打开连接到数据库? 或打开连接到每个查询数据库,如果它当前不打开? 诚实,我不明白,为什么我应该这样做,为什么我不能创build单一的连接到服务器启动数据库,并通过它发送所有的查询,而不是这个开闭式重复。

如何在node-postgres的Queryconfiguration对象中用双引号声明一个string

我使用node.js使用Queryconfiguration对象来访问PostgreSQL表; 我想要build立'SELECT * FROM "Customers" WHERE "CustomersID" = 1'是'SELECT * FROM "Customers" WHERE "CustomersID" = 1' ,它可以与数据库一起工作。 现在,这是我正在使用的查询对象; const query = { text: 'SELECT * FROM $1 WHERE "CustomersID" = $2', values : ["Customers",1], } 但是我得到了“$ 1”错误或者接近“$ 1”的语法错误,我用“或/和”尝试了不同的方法,但是对我来说似乎没有用。 将$ 1声明为值数组中双引号的string的正确方法是什么? 感谢Gus

如何检查表是否包含任何行时传递表名称作为参数?

我试图写一个语句来检查一个表是否包含行: SELECT COUNT(*) FROM $1 ; 如果认为我会把表名传入:$ 1 我收到以下错误信息: 在“$ 1”处或附近的语法错误 我的发言有什么错误?

Node-Postgres查询方法不调用它的callback函数

我有以下代码使用node-postgres: var client = new pg.Client(conString); client.connect(function(err) { if(err) { throw new Error(console.error('could not connect to postgres '+ err)); } }); client.query('select * from public.spatial_ref_sys', function(err, result){ console.log('ffdafda'); throw new Error('kokpokopko'); }); 我会想这个代码执行时,'ffdafda'将被打印到屏幕上,并会出现错误消息'kokpokopko'将被抛出。 我甚至在debugging器中停留了一个永不折断的断点。 由于这些事情从来没有发生,我假设callback从来没有被调用。 有什么select我需要为了得到callback被称为? 我正在阅读文档,我什么都看不到。 注意client.query被调用是很重要的。 我已经通过检查它的返回值来certificate它。 非常感谢你!

用Sequelizejs检索多行

我开始学习SequelizeJs,但是我遇到了一个小问题:我有一个定义如下的模型: var ex_table= sequelize.define("ex_table", { concept1: Sequelize.STRING(5), concept2: Sequelize.STRING(80), concept3: Sequelize.STRING, weight: Sequelize.INTEGER, value: Sequelize.DECIMAL(20,2) }, { tableName: "samble_table"}); 从表格中检索单行,我这样做: ex_table .find({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})}) .complete(function (err, result) { if (!!err) { console.log("An error occurred while creating the table:", err); } else { console.log(result.values); } }) 这给我一行数据,这是预期的。 但是,当我试图像这样检索多行: ex_table […]

节点postgres UTF密码错误

我正在使用https://github.com/brianc/node-postgres pg模块。 显然,我不能使用Unicode密码连接到数据库。 从相同的位置psql连接参数OK。 使用Node.js,它会使password authentication failed for user 。 当我检查与console.log()我确切地看到我的期望。 如果我在数据库和连接string中将密码更改为ASCII,则一切正常。 但我需要旧的Unicode密码被消耗… 我尝试了https://github.com/brianc/node-postgres/wiki/Client new pg.Client({…password: Código 和 conString = "postgres://…Código@" 我知道ODBC( Driver={PostgreSQL UNICODE}; )和JDBC( ;Unicode=true )在连接string中都支持UTF。 我没有发现任何关于Node.js pg模块的UTF支持。 请帮忙。 我看到了http://www.connectionstrings.com/postgresql/并阅读了https://github.com/brianc/node-postgres上的文档。 请帮助这个问题。 谢谢!

如何将MySQL风格的问号`?`绑定参数转换为Postgres风格的`$ 1`绑定参数

我正在将一个现有的项目从MySQL转换到Postgres。 在代码中有相当多的原始SQL文字使用? 作为占位符,例如 SELECT id FROM users WHERE name = ? 但是我得到这个错误: DB query error: error: operator does not exist: character varying = ? 我不想转换所有我现有的SQL ? 到Postgres风格的运营商,如$1 。 是否有某种方式让node-postgres接受问号,或者是一个可以转换为postgres样式参数的工具? 请注意,某种基于正则expression式的hack是不可接受的,因为问号可以在引号内,或者反斜线转义到任何深度。