在尝试向主题表添加新主题时,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
列列表的值。
繁华开满天机
TA贡献1816条经验 获得超4个赞
正如@AdrianKlaver 在评论中指出的那样,我需要更改插入代码。我这样更新它:
insertSubject(knex, newSubject) {
return knex('subjects')
.insert({subject_name: newSubject})
.returning('*')
.then(rows => {
console.log(rows)
return rows[0]
})
},
它有效!
添加回答
举报
0/150
提交
取消