如何在Postgres中维护列表顺序



我正在用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列(,否则您不能假设查询返回的顺序。

最新更新