本地搜索 IndexedDB 怪异键转换

ego6inou  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(121)

我正在尝试将条目从mysql数据库(由PHP通过JSON提供)传输到localfourse数据库。transactions 下列出的记录用id属性编号(在JSON字符串中从1到大约400递增)。我的目标是使用这些id作为localfourse的键。然而,结果如下面DevTools的屏幕截图所示。

var tmp, id;
    var json = JSON.parse(data); // data is the JSON encoded string returned from server
    for(var i = 0; i < json.transactions.length; i++){
      tmp = json.transactions[i];
      id = String(tmp.id);
      console.log(typeof id);
      delete tmp.id;
      transactions.setItem(id, tmp).then(function (value) {
        //console.log(value);
      }).catch(function (err) {
        console.log(err);
      });
    }

resulting database in localforage in DevTools (Screenshot)
我怎样才能让localfourse使用正确的id(1,2,3,4 ... 400等)而不是这些转换的键(看起来是从另一个数字系统派生出来的)?

unhi4e5o

unhi4e5o1#

键是字符串,所以按“1”〈“10”〈“100”〈“11”〈“2”排序。
底层数据存储(IndexedDB)支持数字和排序键,因此您可以删除localfourse并直接使用IndexedDB。
或者,向左填充字符串:
id = ("00000000" + String(tmp.id)).substr(-8);
...这将为您提供:“00000001”〈“00000002”〈“00000010”〈“00000011”〈“00000100”,则表示该数据库已被删除。

相关问题