Javascript 请问我在Node和Express JS中的PostgreSQL查询有什么问题

Javascript 请问我在Node和Express JS中的PostgreSQL查询有什么问题,javascript,node.js,postgresql,Javascript,Node.js,Postgresql,我想使用CTE通过一个查询向Postgres中的两个表添加数据。在用户从前端的表单提交数据后,我希望我的SQL查询在表1中自动插入id。然后,表1中的相同id将用于在同一事务中创建表2的数据。我有下面的代码,但是当我通过在Postman中提交值来运行它时,我得到了下面的错误,这表明返回的pid没有在第二个查询中使用 Error in transaction error: null value in column "pid" violates not-null constraint 请参见下面的

我想使用CTE通过一个查询向Postgres中的两个表添加数据。在用户从前端的表单提交数据后,我希望我的SQL查询在表1中自动插入id。然后,表1中的相同id将用于在同一事务中创建表2的数据。我有下面的代码,但是当我通过在Postman中提交值来运行它时,我得到了下面的错误,这表明返回的pid没有在第二个查询中使用

Error in transaction error: null value in column "pid" violates not-null constraint
请参见下面的我的代码:

exports.addPost = (req, res) => {
  db.query('BEGIN', err => {
      if (shouldAbort(err)) return
      const queryPost = 'INSERT INTO table1 (post_type, created_on) VALUES($1, $2) RETURNING pid'
      db.query(queryPost, ['keyword', 'now()'], (err, res) => {
        if (shouldAbort(err)) return
        const data = {
        author: req.body.username,
        title: req.body.title,
        description: req.body.description,
        body: req.body.body,
        category: req.body.category,
        search_volume: req.body.search_volume,
        is_deleted: req.body.is_deleted
      }
      const insertKeywordText = `INSERT INTO table2 (pid, author, title, description, body, category, search_volume, is_deleted, created_on) 
                                   VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`
    const insertKeywordValues = [res.rows.pid, data.username, data.title, data.description, data.body, data.category, data.search_volume, data.is_deleted, 'now()']

        db.query(insertKeywordText, insertKeywordValues, (err, res) => {
          if (shouldAbort(err)) return
          db.query('COMMIT', err => {
            if (err) {
              console.error('Error committing transaction', err.stack)
            }
            done()
          })
        })
      })
    })
  }

假设
rows
实际上是一个数组,那么肯定
res.rows[0]。pid
就是您想要的吗?我不确定您使用的是什么库(您能确认吗?),但在我看来,您多次点击数据库…我指的是您用于执行数据库查询的库?
DB
不是本机构造,因此它将来自一个库,您用于PostgreSQL连接的节点库是哪个?“是吗?”詹姆斯,我想这是阵列的错误。它现在正在工作,但是username列返回空值,即使数据已经在数据库中注册,请求也会继续以邮递员的方式发送。是的,它是pg库。