【问题标题】:Relation doesnt exist Multi-row insert with pg-promise关系不存在多行插入与 pg-promise
【发布时间】:2019-09-27 19:05:26
【问题描述】:

我正在使用 postgresql-db 开发一个 nodejs 项目。 我创建了一个名为“UserAsanas”的表。肯定有的,我查了又查了。

但是当我尝试多行插入时,它一直告诉我以下内容:

错误:关系“UserAsanas”不存在

const cs =  pgp.helpers.ColumnSet(['UserID', 'AsanaID', 'RoutineID'], { table: 'UserAsanas' });

const values = [{UserID: 1, AsanaID: 2,RoutineID: 1}, {UserID: 1, AsanaID: 33,RoutineID: 1}];

const multi =  pgp.helpers.insert(values, cs)+ ' RETURNING id';
// INSERT INTO "UserAsanas"("UserID","AsanaID","RoutineID") VALUES(1,2,1),(1,33,1) RETURNING id

db.none(multi).then(data=> {
  res.status(201)
})
.catch( err => {
   return next(err)
})

【问题讨论】:

  • SQL 标识符(如表名和列名)默认情况下不区分大小写——您是否有可能将表“userasanas”作为“UserAsanas”访问?反之亦然?
  • @jmelesky 我也想说。要么就是这样,要么他在非默认模式中创建了表。
  • 谢谢,该表肯定被称为 UserAsanas,我可以通过添加到例程 ${routineId} 的db.one('INSERT INTO UserAsanas (UserID, AsanaID, RoutineID) VALUES (1,2,3) RETURNING ID').then(data=> { res.status(201).send(Asana 插入数据,ID 为:${data.id}) })
  • 只是为了添加更多信息,我使用“pg-promise”:“^8.6.5”和“bluebird”:“^3.5.4”

标签: javascript node.js postgresql pg-promise


【解决方案1】:

是的。所有小写​​字母,它就像一种享受!

const single =  pgp.helpers.insert({userid: 1, asanaid: 2,routineid: 1}, null,  'userasanas' );
const multi =  pgp.helpers.insert([{userid: 1, asanaid: 5,routineid: 1}, {userid: 1, asanaid: 4,routineid: 1}], ['userid', 'asanaid', 'routineid'],  'userasanas' );

【讨论】:

  • 这意味着您错误地声明了表格,使用混合大小写,但没有将其包装到""。使用"" 更正您的表+列声明,仅此而已。这与pg-promise 无关,这个答案不是一个好的建议。
猜你喜欢
  • 2019-09-23
  • 1970-01-01
  • 2016-09-15
  • 2016-07-14
  • 2019-11-12
  • 1970-01-01
  • 2020-05-15
  • 2017-06-07
  • 1970-01-01
相关资源
最近更新 更多