Tag: node postgres

node-postgres与callback或asynchronous/等待交易?

我正在运行节点7.6.0,它支持asynchronous/等待。 节点postgres客户端池支持asynchronous/等待,并有一个很好的例子。 但是,node-postgres( 这里 )中的事务示例使用callback而不是async / await。 尽pipe这个例子,我想我会尝试在asynchronous/等待快速testing交易: let client = null; try { client = await this.pool.connect(); } catch (error) { console.log('A client pool error occurred:', error); return error; } try { await client.query('BEGIN'); await client.query('UPDATE foo SET bar = 1'); await client.query('UPDATE bar SET foo = 2'); await client.query('COMMIT'); } catch (error) { […]

什么样的对象是node-postgres错误? 为什么node的console.log和JSON.stringify以不同的方式处理它?

console.log像这样输出, { [error: syntax error at or near "step"] length: 86, name: 'error', severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '62', internalPosition: undefined, internalQuery: undefined, where: undefined, file: 'scan.l', line: '1001', routine: 'scanner_yyerror' } 但是JSON.stringify没有看到错误的叙述部分, { “长度”:86, “名称”: “错误”, “严重性”: “ERROR”, “代码”: “42601”, “位置”: “62”, “文件”: “scan.l里”,”行 “:” 1001" , “常规”: “scanner_yyerror”} 我不知道如何得到这个“错误:列”未定义“不存在”阅读wikies( […]

ECONNFUSED在应用程序中进行GET请求时,API成功返回JSON

我正在用React编写节点应用程序,使用node-postgres和superagent进行后端调用。 比方说,我正在做一个GET请求,并使用返回的JSON来填充学生表。 我的API看起来像这样: import pg from 'pg'; import Router from 'express'; let router = new Router(); let conString = "postgres://user:pass@localhost/db_name"; router.get('/getStudents', function(req, res) { var results = []; pg.connect(conString, function(err, client, done) { if (err) { done(); console.log(err); return res.status(500).json({success: false, data: err}); } var query = client.query('SELECT first_name, last_name, email FROM students'); query.on('row', function(row) […]

node-postgres是否支持多个结果集

我有一个PostgresQL函数返回多个结果集。 我可以在.net中提取这些结果集没有问题(所以我知道我的function正常工作),但我有麻烦与node-postgres这样做。 结果对象返回与返回的数据集数相匹配的7个项目的数组。 在Node中,7行中的每一行都只包含一个<unnamed portal 1>的string。 connection.query("BEGIN"); connection.query({text: "SELECT getoperationaldatasetmodel($1)", values : [clientid]}, function(err, results) { if (err) { connection.query("COMMIT"); self.pool.release(connection); callback(err); } else { var opsDataset = null; var rows = results.rows; // this returns 7 rows but the rows do not contain data but rather the name of the dataset. } 所以:node-postgres是否支持多个结果集,如果是的话,有关如何提取的build议? 编辑:这是我使用的节点postgres的代码,如果其他人需要在未来使用它。 […]

如何优化Postgresql max_connections和node-postgres连接池?

简而言之,我无法支持利用Postgresql,Node.js和node-postgres的数据API每分钟超过5000个读取请求。 瓶颈似乎在API和数据库之间。 这里是implmentation的细节。 我为Node.js供电的数据API使用了AWS Postgresql RDS数据库实例(m4.4xlarge – 64 GB mem,16 vCPU,350 GB SSD,没有预configuration的IOPS)。 默认情况下,RDS的max_connections = 5000。 节点API在两个群集之间进行负载均衡,每个群集有4个进程(2个Ec2和4个vCPU,在群集模式下使用PM2运行API)。 我使用node-postgres将API绑定到Postgresql RDS,并试图使用它的连接池function。 以下是我的连接池代码示例: var pool = new Pool({ user: settings.database.username, password: settings.database.password, host: settings.database.readServer, database: settings.database.database, max: 25, idleTimeoutMillis: 1000 }); /* Example of pool usage */ pool.query('SELECT my_column FROM my_table', function(err, result){ /* Callback code here */ […]

nodejs应用程序的node-postgres和pg-promise

我将用Postgresql构build一个Nodejs应用程序作为后端。 我不打算使用像Sequelize这样的ORM, 因为文档和性能问题很糟糕,或者其他ORM – ORM是反模式 。 我发现node-postgres和pg-promise是这方面的候选人。 那么,任何人都可以澄清一个工具比另一个更好的scheme,或者哪一个工具是描述的方式,前提是node-postgres自2010年以来一直在发展,自2015年起pg-promise。

node-postgres:如何在不执行查询的情况下准备一个语句?

我想使用node-postgres模块在postgres中创build一个“准备好的语句”。 我想创build它,而不绑定到参数,因为绑定将发生在一个循环。 在我阅读的文档中 : query(object config, optional function callback) : Query If _text_ and _name_ are provided within the config, the query will result in the creation of a prepared statement. 我试过了 client.query({"name":"mystatement", "text":"select id from mytable where id=$1"}); 但是当我尝试只传递configuration对象中的文本和名称键,我得到一个exception: (已翻译)消息绑定了0个参数,但准备好的语句需要1个 有什么我失踪? 你如何创build/准备一个陈述,而不将其绑定到具体的价值,以避免在循环的每一步重新准备陈述?

使用node-postgres将文件存储在postgres中

我正在尝试使用node-postgres模块将一个小文件存储到postgres数据库中。 我明白,我应该使用bytea数据types来做到这一点。 我遇到的问题是当我做一些事情时: fs.readFile path, (err, data) -> client.query 'UPDATE file_table SET file = $1 WHERE key = $2', [data, key], (e, result) -> …. 数据库中文件列的内容是:\ x并且不存储任何内容。 如果我更改数据缓冲区为hex即data.toString('hex')文件存储,但所有格式都会丢失,当我读取文件退出。 使用node-postgres模块将文件存储到postgres中的正确方法是什么?

与Bluebird手动promisifying pg.connect

我想promisify node-postgres'pg.connect方法以及callback中提供的内部connection.query方法。 我可以将后者进行修改,但是我需要手动执行第一个(如果我在这里丢失了某些东西,请解释一下)。 事情是,我不确定这段代码是否正确或应该改进? 代码工作,我只是想知道,如果我使用蓝鸟的意思。 // aliases var asPromise = Promise.promisify; // save reference to original method var connect = pg.connect.bind(pg); // promisify method pg.connect = function (data) { var deferred = Promise.defer(); connect(data, function promisify(err, connection, release) { if (err) return deferred.reject(err); // promisify query factory connection.query = asPromise(connection.query, connection); // resolve promised connection […]

节点服务器无法连接到postgres数据库

我最近从MySQL切换到postgres作为我的数据库node.js项目。 虽然我能够从我的本地pgAdmin III(OSX)客户端到达远程postgres数据库,但到目前为止,我一直无法通过node.js连接到我的数据库。 我确定我为pgAdmin和我的node.jsinput的凭据是完全相同的。 我试过的另一件事是设置我的本地ipadress信任在我的数据库服务器的pg_hba.conf中的md5。 有什么我做错了吗? 我最喜欢的search引擎提出了一些关于重置我的本地操作系统的令人担忧的命中。 我只是使用了node-postgres的github repo文档中的例子: var pg = require('pg'); var conString = "postgres://myusername:mypassword@hostname:5432/dbname"; var client = new pg.Client(conString); client.connect(function(err) { if(err) { return console.error('could not connect to postgres', err); } client.query('SELECT NOW() AS "theTime"', function(err, result) { if(err) { return console.error('error running query', err); } console.log(result.rows[0].theTime); client.end(); }); }); 这些是我每次尝试启动服务器时遇到的错误: could […]