gpt4 book ai didi

dart - 在Dart中使用IndexedDb ObjectStore

转载 作者:行者123 更新时间:2023-12-03 03:46:48 25 4
gpt4 key购买 nike

我一直在尝试使用Dart的IndexedDb包从IndexedDb实例中获得一个条目。但是我将getObject()称为文档说的返回Future *(我不知道的 future ),我没有任何Maps或其他对象可以使用。
Future方法中的store.getObject(id).then()返回什么?如果不返回任何信息,如何获取存储在数据库中的信息?

//within a TurnObjectStore class
Future<Turn> getTurn(int id){
Transaction t = _db.transaction(_TABLE_NAME, 'readonly');
ObjectStore store = t.objectStore(_TABLE_NAME);
return store.getObject(id).then((Map turn){
print('getTurn');
print(turn);
return turn;
});
}

indexed_db getObject() - how to return result在这里回答了类似的问题,但是当我尝试这样做时,我在IDE中收到警告,我想知道自去年以来规范是否已更改。
  • https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-dom-indexed_db.ObjectStore#id_getObject
  • 最佳答案

    我正在使用Dart 1.2,并且 getObject(id)可以正常工作。

    我相信返回的Future类型取决于存储在数据库中的内容...
    如果确实将数据另存为对象的Map,则它将返回Map。

    要将对象存储和还原为 map ,您可以查看the official dart example for indexedDB:

    // Serialize this to an object (a Map) to insert into the database.
    Map toRaw() {
    return {
    'milestoneName': milestoneName,
    'happensOn': happensOn.toString(),
    };
    }

    //Create a Milestone based on the Map returned by the IndexedDB
    Milestone.fromRaw(key, Map value):
    dbKey = key,
    milestoneName = value['milestoneName'],
    happensOn = DateTime.parse(value['happensOn']) {
    tick();
    }

    您可以直接从chrome开发人员工具中看到存储的对象,对于存储的Map,它应如下所示:

    所以我可以用getObject取回对象:

    var tr = mydb.transaction(myDB.CLIENT_STORE, 'readonly');
    var st = tr.objectStore(myDB.CLIENT_STORE);
    st.getObject(2).then((r){
    Client client = new Client.fromRaw(2,r);
    [...]
    }

    关于dart - 在Dart中使用IndexedDb ObjectStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23003025/

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