为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Postgres 谈论第 0 列;这是什么意思?

为什么 Postgres 谈论第 0 列;这是什么意思?

米脂 2022-12-29 15:10:01
在尝试向主题表添加新主题时,Postgres 认为我想向第 0、1 和 3 列添加一些内容。为什么?我正在使用 Postman 发布一个新用户。在用户路由中,我将用户对象插入到用户表中。这样可行。我的第二步是subjects如果该主题尚不存在,则将该主题插入表格中。这就是问题所在。此方法应在subjects表中插入一个新主题并返回新行:    insertSubject(knex, newSubject) {        return knex            .insert(newSubject)            .into('subjects')            .returning('*')            .then(rows => {                console.log(rows)                return rows[0]            })    },我没有这样做,而是在邮递员中收到了这条消息:{    "message": "insert into \"subjects\" (\"0\", \"1\", \"2\") values ($1, $2, $3) returning * - column \"0\" of relation \"subjects\" does not exist",    "error": {        "length": 122,        "name": "error",        "severity": "ERROR",        "code": "42703",        "position": "25",        "file": "parse_target.c",        "line": "1034",        "routine": "checkInsertTargets"    }作为参考,这就是我调用上述方法的方式:    .post(jsonParser, (req, res, next) => {        const { first_name, last_name, email, user_password, gender, tutor, student, fee, in_person, online_medium, subjects } = req.body;        const userFields = { first_name, last_name, email, user_password, gender, tutor, student, fee, in_person, online_medium, subjects };        const newUser = { first_name, last_name, email, user_password, gender, tutor, student, fee, in_person, online_medium };        for (const [key, value] of Object.entries(userFields)) {            if (value === null) {                return res.status(400).json({                    error: { message: `Missing ${key} in request body` }                })            }        }        const user = []        UsersService.insertUser(            req.app.get('db'),            newUser        )        .then(res => {            user.push(res)            return SubjectsService.getBySubject(                req.app.get('db'),                subjects            )        })
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

错误:

"insert into \"subjects\" (\"0\", \"1\", \"2\") values ($1, $2, $3) returning * - column \"0\" of relation \"subjects\" does not exist"

原因是您告诉 Postgres 该表包含您想要INSERT values ($1, $2, $3)放入的列“0”、“1”和“2”。该错误告诉您表中不存在这些列。实际上它停在“0”列,因为再往前走是没有意义的。最好的猜测是您正在将您分配给INSERT列列表的值。


查看完整回答
反对 回复 2022-12-29
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

正如@AdrianKlaver 在评论中指出的那样,我需要更改插入代码。我这样更新它:


    insertSubject(knex, newSubject) {

        return knex('subjects')

            .insert({subject_name: newSubject})

            .returning('*')

            .then(rows => {

                console.log(rows)

                return rows[0]

            })

    },

它有效!


查看完整回答
反对 回复 2022-12-29
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信