我正在用react制作我的第一个postgres应用程序。这是一个简单的待办事项列表。
现在,当你检索任务列表时,你会得到以下信息:
pernstack=# SELECT * FROM todo;
todo_id | description
---------+-------------------------------
825 | First task
826 | Second Task
824 | Third task
822 | Fourth task
(4 rows)
问题是,如果我使用PUT
请求编辑第一个任务。这项任务会被放在列表的底部。这是编辑请求:
app.put("/todos/:id", async (req, res) => {
try {
const { id } = req.params;
const { description } = req.body;
const updateTodo = await pool.query(
"UPDATE todo SET description = $1 WHERE todo_id = $2",
[description, id]
);
res.json("Todo was updated");
} catch (err) {
console.error(err.message);
}
});
在不打乱任务顺序的情况下编辑任务的最基本方法是什么?我不想手动添加index
列。在MySQL中,我相信这是自动完成的。
SELECT * FROM todo ORDER BY todo_id
将使它们始终按照添加的顺序,假设todo_id
是一个自动递增的数字
如果您希望将来能够指定列表的顺序,您可能希望添加一个标记为list_order
或类似的列,然后执行SELECT * FROM todo ORDER BY list_order
数据库表是无序的集合。除非在查询表时显式使用order by
子句(例如,像您建议的那样,使用手动task_index
列(,否则您不能假设查询返回的顺序。