我在使用React和MySQL删除帖子时遇到了麻烦。我没有收到任何错误或警告,但帖子没有被删除,当我在console.log时,受影响的行返回0。
deleteNote = id => {
// <-- declare id parameter
axios
.delete(`http://localhost:5000/delete/${id}`) // <-- remove ;
.then(() => {
// Issue GET request after item deleted to get updated list
// that excludes note of id
this.getAllNotes()
})
.then(res => {
const allNotes = res.data;
this.setState({ allNotes });
})
.catch(err => {
console.error(err);
});
};
<button
type="button"
className="btn-xs btn-info float-right"
onClick={() => this.props.deleteNote(note.ID)}>
<span>
<i className="fas fa-trash-alt" />
</span>{" "}
Delete
</button>
我的删除方法在快速正确的控制台记录正确的帖子ID
app.delete("/delete/:id", (req, res) => {
let { ID } = req.params.id;
let sql = "DELETE FROM notes WHERE ID= ?";
console.log("id: ", req.params.id);
// delete a row with id = req.params.id
connection.query(sql, [ID], (error, results, fields) => {
if (error) return console.error(error.message);
console.log("Deleted Row(s):", results.affectedRows);
});
});
我改变了使用参数的方式后,它工作了。有人知道为什么传递ID作为第二个参数不起作用?
app.delete("/delete/:id", (req, res) => {
let { ID } = req.params.id;
let sql = `DELETE FROM notes WHERE ID = ${req.params.id}`;
console.log("id: ", req.params.id);
// delete a row with id = req.params.id
connection.query(sql, (error, results, fields) => {
if (error) return console.error(error.message);
res.status(200).send(results);
console.log("Deleted Row(s):", results.affectedRows);
});
});