【问题标题】:Error: column "undefined" does not exist错误:列“未定义”不存在
【发布时间】:2020-07-17 18:41:33
【问题描述】:

大家好

我是 ReactJS 的新开发者。我尝试将 Firebase 设置到我的后端,但我的前端有问题。如果我使用邮递员运行我的 API,我的 API 可以工作并从我的后端发送一条消息,但如果我从前端运行我的代码,我会收到类似这样的错误 表中的列是用户并且不是未定义

 { error: column "undefined" does not exist
    at Connection.parseE (C:\fordg\node_modules\pg\lib\connection.js:567:11)
    at Connection.parseMessage (C:\fordg\node_modules\pg\lib\connection.js:391:17)
    at Socket.<anonymous> (C:\fordg\node_modules\pg\lib\connection.js:129:22)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:547:20)
  name: 'error',
  length: 109,
  severity: 'ERROR',
  code: '42703',
  detail: undefined,
  hint: undefined,
  position: '55',
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'parse_relation.c',
  line: '3183',
  routine: 'errorMissingColumn' }

这是我的后端代码

Orders.patch([ Object.assign({id: req.params.id}, req.body) ])
    .then(orders => {
        DB.query("SELECT oauth FROM users WHERE id = "+req.body.driver+" OR id = "+req.body.customer+"").then(res=>{
            res.map((row,i)=>{
                let tmp = {
                    token: row.oauth.token
                }

                res[i] = tmp;
            });

            // console.log(res);
            const arrayToken = res.map(function (obj) {
                return obj.token;
            });

            // console.log(arrayToken);

            const message = { 
            // to: res[0].token,
            registration_ids: arrayToken,
          notification: {
            body: "Hey! you got update order notification."
          }
        };

        fcm.send(message, function(err, response){
          console.log(response);
        })
        }).catch(err => console.log(err));

        jsonData = util.jsonData(null, orders);
        res.json(jsonData);
    })
    .catch(err => {
        jsonData = util.jsonData(400);
        res.status(jsonData.code).json(jsonData);
    })
})

那么如何修复它,你能帮我解释一下我的代码错误吗?

【问题讨论】:

  • (1) 为什么要使用字符串连接来构建 SQL?你不认为占位符会更好吗? (2) req.body.driverreq.body.customer 是什么?我很确定其中至少有一个是undefined
  • req.body.driverreq.body.customer 的值为 id
  • 我建议找到一种更好的方法来构建您的查询,此代码看起来容易受到 SQL 注入的影响。
  • 你确定吗?您将id = undefined 发送到数据库中,因此这两个值之一是undefined
  • 哦,谢谢,id 之一是未定义的@muistooshort

标签: node.js postgresql reactjs express


【解决方案1】:

错误在这里

其中 id = "+req.body.driver+" 或 id = "+req.body.customer+"

你需要在这个范围内使用定义的变量

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 2020-11-10
    • 2015-04-28
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多