我正在尝试将多列作为参数传递以删除postgresql
表中的一行,但是在第一个参数之后,所有其余参数均未定义
这是我正在使用knex
ORM
const deleteDeltaTableData = (req, res, db_client) => {
const { id, delta_type, action_type, delta_timestamp } = req.body
console.log('id='+id);
console.log('delta_type='+delta_type);
onsole.log('action_type='+action_type);
console.log('delta_timestamp='+delta_timestamp);
db_client('delta')
.where({id})
.andWhere({delta_type})
.andWhere({action_type})
.andWhere({delta_timestamp})
.del()
.then(() => {
res.json({delete: 'true'})
})
.catch(err => {
console.log(err);
res.status(400).json({dbError: 'db error'});
});
}
现在我的console
输出是这样:
id=f3si
delta_type=undefined
action_type=undefined
delta_timestamp=undefined
Error: Undefined binding(s) detected when compiling DEL query: delete from "delta" where "id" = ? and "delta_type" = ? and "action_type" = ? and "delta_timestamp" = ?
我在做什么错了?
在我的孩子中,这首先是我的客户端代码:
function onDeleteClick(id, delta_type, action_type, delta_timestamp) {
console.log(id, delta_type, action_type, delta_timestamp)
fetch('/api/delta', {
method: 'delete',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id,
delta_type, action_type, delta_timestamp
})
})
.then(response => response.json())
.then(row => {
deleteItemFromState(id, delta_type, action_type, delta_timestamp)
})
.catch(err => console.log(err))
}
<TableCell>
<IconButton onClick={() => onDeleteClick(row.id, row.delta_type, row.action_type, row.delta_timestamp)} aria-label="Delete">
<DeleteIcon />
</IconButton>
</TableCell>
这是我的父母React
组件:
deleteItemFromState = (id, delta_type, action_type, delta_timestamp) => {
const updatedRows = this.state.rows.filter(
row =>
row.id !== id
&& row.delta_type !== delta_type
&& row.action_type !== action_type
&& row.delta_timestamp !== delta_timestamp
);
this.setState({ rows: updatedRows });
};
render() {
const { rows } = this.state;
return (
<DeltaTable
rows={rows}
deleteItemFromState={this.deleteItemFromState }
/>
);
}
答案 0 :(得分:0)
根据您的控制台日志,req.body不包含delta_type,action_type或delta_timestamp的值。您的knex代码没有任何问题-只是您正在向其提供未定义的值。无论请求数据来自何处,问题都存在于上游。
答案 1 :(得分:0)
我看不到纽结有任何问题。我相信您没有将正确的值发送到控制器。我会检查您的请求数据和正文,并确保您正在传递要存储的数据。