Articles of pg promise

在pg-promise中使用助手时如何设置列

由node.js开发 我正在使用pg-promise 。 插入以下数据时出现问题。 我想插入多行数据到下面的表格中。 create table info ( id varchar(20) not null, name varchar(20) not null, createdate timestamp with time zone not null ) 我插入下面的数据。 let info = [ { myid: '0001', myname: 'name1' }, { myid: '0002', myname: 'name2' }, { myid: '0003', myname: 'name3' }, ] 我原来插入以下内容。 for (let i = 0; […]

pg-promise创build列错误

var name = req.body.name; db.any('alter table "houseList" add $1 text', [name]) 我试图添加一个新的列到数据库主机上使用上述代码在nodejs heroku,但我不断收到此错误: 错误:在语法错误或“”哈哈“” “哈哈”是名字里的价值,任何人都有什么想法是错的?

在pg-promise中使用.batch参数列表

我正在运行nodejs和pg-promise,并且希望使用批处理函数来创build一个包含多个UPDATE的BEGIN和COMMIT事务。 这是我的代码: db.tx(function (t) { return this.batch(function() { for (var i = 0; i < cars.length; i++) { return db.any('UPDATE … ', [car_id, cars[i].votes]); } }); }) 但是,似乎没有任何事情发生。 是不是可以像这样创build我的批处理列表?

Postgresql捕捉事务错误和回滚

我正在使用pg-promise来运行我的SQL查询。 查询本身存储在外部的.sql文件中。 当我执行一个事务时,如果发生错误(如预期的那样),Postgres将中止事务。 我遇到的问题是,我试图在事务中止后尝试运行的任何单独的查询都不运行,而是我得到以下消息: “当前事务中止,命令被忽略,直到事务块结束” 。 如果查询是在psql控制台中运行的,我可以通过在查询失败后发出ROLLBACK来解决这个问题。 我不认为这是一个选项,因为我的应用程序使用的SQL位于外部文件。 我也不认为保存点是一个选项,因为如果失败了,整个事务应该被抛出。 如果发生此错误,我将如何在SQL文件中回滚? 这里是SQL的参考: BEGIN; DELETE FROM tournament_tossup_values WHERE tournament_id = $1 AND NOT EXISTS ( SELECT id FROM tournament_match WHERE tournament_id = $1 ); UPDATE tournament SET bonus_point_value = $5, parts_per_bonus = $6 WHERE id = $1 AND NOT EXISTS ( SELECT id FROM tournament_match WHERE tournament_id […]

使用节点中的psql(pg-promise)来承诺循环/ promise.all

你好,我是Promises的新手,并坚持如何等待for循环内的所有承诺,然后去下一个()。 我见过几个promise.all的例子,但我不清楚如何适应他们为我的下面的代码。 它现在转到for循环后的next(),并在for循环完成之前解决。 任何帮助表示赞赏! 我正在使用pg-promise (带有promise的 psql)。 原始码: function getTeamMembers(aTeam) { let promise = new Promise(function(resolve, reject) { db.getTeamMembers(aTeam.tid) //return sql results rows .then(function(rows){ for(let i=0; i<rows.length; ++i) { //loop through each result row getUserByUsername(rows[i].username) .then(function(cfUser) { //add user from row to aTeam object aTeam.addMember(cfUser); }) .catch(function(e) { reject(e); }); } }) .then(function(){ console.log(aTeam); //confirm […]

在节点上如何执行插入如果不存在

我的restapi调用请求这个函数在Postgre-sql上创buildfirebase标记。 但是,我意识到只要令牌刷新,就会为同一个用户添加一个新行。 我如何做到这一点,以便它将执行一个插入,如果它存在和更新,如果它不。 我已经尝试了冲突更新,但它不起作用。 代码在这里: function createUserToken(req, res, next) { var userid = req.user.email; db.none('insert into fcmdb(userid, token)'+ 'values($1, $2) on conflict update', [userid,req.body.token]) .then(function () { res.status(200) .json({ status: 'success', message: 'Inserted token' }); }) .catch(function (err) { return next(err); }); }

参数化/准备好的陈述用法pg-promise

我使用pg-promise koa v2 。 我尝试做一个简单的SELECT 2 + 2; 在参数化/准备声明中testing我的设置: // http://127.0.0.1:3000/sql/2 router.get('/sql/:id', async (ctx) => { await db.any({ name: 'addition', text: 'SELECT 2 + 2;', }) .then((data) => { console.log('DATA:', data); ctx.state = { title: data }; // => I want to return num 4 instead of [Object Object] }) .catch((error) => { console.log('ERROR:', error); […]

如何结束“pg-promise”应用程序

我正在尝试编写基于请求有效负载的REST API来select数据库并执行某些操作。 根据文档,我将在操作结束时释放共享连接对象,然后通过结束pgp应用程序来完成操作。 var pgp = require('pg-promise')(); var connection = { user: 'generaluser', //env var: PGUSER database: 'seeddb', //env var: PGDATABASE password: '$$$$$$$', //env var: PGPASSWORD host: 'localhost', // Server hosting the postgres database port: 5432 //env var: PGPORT }; var sco; module.exports = { getuser: function(req, res) { Account.findOne({ select: [ 'database' ], where: […]

与pg-promise的嵌套事务

我正在使用NodeJS,PostgreSQL和令人惊叹的pg-promise库。 就我而言,我想执行三个主要的查询: 在表格的“推文”中插入一条推文。 如果tweet中有hashtags,将它们插入到另一个表“hashtags” 他们将tweet和hashtag链接到第三个表“hashtagmap”(多对多关系表) 以下是请求正文(JSON)的示例: { "id":"12344444", "created_at":"1999-01-08 04:05:06 -8:00", "userid":"@postman", "tweet":"This is the first test from postman!", "coordinates":"", "favorite_count":"0", "retweet_count":"2", "hashtags":{ "0":{ "name":"test", "relevancetraffic":"f", "relevancedisaster":"f" }, "1":{ "name":"postman", "relevancetraffic":"f", "relevancedisaster":"f" }, "2":{ "name":"bestApp", "relevancetraffic":"f", "relevancedisaster":"f" } } 上面的所有字段都应该包含在表格“推文”之外,而标签又应该包含在表格“标签”中。 下面是我使用的代码,基于NodeJS模块中来自pg-promise文档的嵌套事务。 我想我需要嵌套事务,因为我需要知道tweet_id和hashtag_id为了链接他们在hashtagmap表中。 // Columns var tweetCols = ['id','created_at','userid','tweet','coordinates','favorite_count','retweet_count']; var hashtagCols = ['name','relevancetraffic','relevancedisaster']; //pgp Column Sets […]

节点与asynchronous/等待 – 如何得到错误发生的具体行?

我有一个节点的function,看起来像这样: async someFlow() { try { func1(); func2(); await getSomeData(); func3(); } catch (e) { sentryIo.captureException(e); } } 和getSomeData()看起来像这样: async getSomeData() { //… some code await pgPromise.one('select * from some bad syntax') // line 351!! //… some code } 当pgPromise(这是与PostgreSQL交谈的库)引发错误时,错误的堆栈跟踪仅包含发生错误的pgPromise lib的内部行号 。 所以当错误被捕获并logging到Sentry.io服务时,我无法知道错误的确切路线。 我怎么能这样做,以便错误将抑制堆栈跟踪,告诉我在行351发生的错误