gpt4 book ai didi

javascript - 在 IndexedDB 中使用有序列表

转载 作者:行者123 更新时间:2023-11-30 18:29:22 24 4
gpt4 key购买 nike

我正在尝试通过创建一个简单的记事本应用程序来学习 IndexedDB 的基础知识。我在这种环境中使用有序列表时遇到困难。

我不确定如何实现的功能是有一个有序的笔记列表。

我第一次尝试在 WebSQL 中实现记事本应用程序,我发现像这样选择笔记非常容易:

select * from notes order by position

而在指定位置插入音符时,我首先做了...

update notes set position = position + 1 where position >= insert_position

... 移动每个音符,为位置 insert_position 的新音符腾出空间。

但我看到 WebSQL 实际上已被弃用。

在 IndexedDB 中实现这种功能的可能性有多大?我不完全理解如何在 IndexedDB 等环境中创建有序列表,因为上述快速查询不适用。

附带说明一下,我知道可以在 IndexedDB 中存储一个数组,但这样我每次都只会使用一条记录。我宁愿寻找一种方法来以某种方式拥有所有记录的有序列表(每条记录代表一个注释),并能够更新排序(如上面的移动查询)。

有人可以阐明有序列表的 IndexedDB 方式吗?

最佳答案

与许多事情一样,有几种方法可以解决这个问题。

如果您要创建一个根据创建时间对笔记进行排序的应用程序,它就像使用自动递增键一样简单(此标志在 objectStore 创建时指定)。请注意,其中一个的 id(又名 primaryKey)为 1,第二个为 2,依此类推。这将使用默认的 keyPath,因此您无需创建索引即可打开游标。

要按可能更改的内容(例如按时修改)对注释进行排序,您需要在该字段上创建一个索引,并确保在addingputting 时指定它> 对象。您将打开一个下限为 0 的游标(按字典顺序排列的键意味着它出现在所有字符串之前)并保持上限打开。然后,您将光标逐行逐行触发 onsuccess 处理程序,直到您耗尽光标并在 事件中返回 null。目标.result.

听起来您可能希望拥有一个字段(例如“位置”)并对其进行排序。如上所述,使用常规索引和游标完全可行。一个建议是将 position 字段设置为 float 而不是整数,因为前者可以更新顺序而无需更改任何其他行(position n = ( (位置 1 + 位置 2 )/2 )).

关于javascript - 在 IndexedDB 中使用有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com