米脂
2022-12-29 15:10:01
在嘗試向主題表添加新主題時,Postgres 認為我想向第 0、1 和 3 列添加一些內(nèi)容。為什么?我正在使用 Postman 發(fā)布一個新用戶。在用戶路由中,我將用戶對象插入到用戶表中。這樣可行。我的第二步是subjects如果該主題尚不存在,則將該主題插入表格中。這就是問題所在。此方法應(yīng)在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" }作為參考,這就是我調(diào)用上述方法的方式: .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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超4個贊
正如@AdrianKlaver 在評論中指出的那樣,我需要更改插入代碼。我這樣更新它:
insertSubject(knex, newSubject) {
return knex('subjects')
.insert({subject_name: newSubject})
.returning('*')
.then(rows => {
console.log(rows)
return rows[0]
})
},
它有效!
添加回答
舉報
0/150
提交
取消