2

私は linq2indexedDB ラッパーを使用して IndexedDB を操作しています。私は TypeScript で作業していますが、それが問題に実際に関連しているとは思いません。少し奇妙な構文を説明するだけです。DB を作成し、いくつかのオブジェクト ストアとインデックスを追加します (ポイントを維持するためにコードを短くしています)。

var databaseDefinition = [{
        version: config.version,
        objectStores: [
            { name: "Regions", objectStoreOptions: { autoIncrement: false, keyPath: "ID" } },
            { name: "Countrys", objectStoreOptions: { autoIncrement: false, keyPath: "ID" } }
            // etc.
        ],
        indexes: [
            { objectStoreName: "Countrys", propertyName: "RegionID", indexOptions: { unique: true, multirow: false } }
            // etc.
        ]
    }];

これは機能し、chrome F12 ツールで db 構造を調べると、期待される objectStores を確認できます。次に、簡単な挿入操作を試みます。

    var region = serverData.Regions[0];
    this.db.linq.from("Regions").insert(region, region.ID).then((args) => {
        tracer.Trace("Insert success: " + args);
    }, (args) => {
        tracer.Trace("Insert failure: " + args);
    });

これは失敗しますが、args返されるオブジェクトは定義されていないため、理由がわかりません。問題の内容と、それを追跡する方法を説明できる人はいますか?

編集(問題に厳密には関連していないため、追加のコードを削除しました。以下のクリストフの回答で説明されているように、ログを有効にすると、問題を追跡するのに役立ちました。これは、以下の私自身の回答で解決されます)。

4

2 に答える 2

2

問題が何であるかは 100% わかりませんが、キーパスが定義されていて、キーパスの値がオブジェクトに存在する場合、キーを提供する必要はありません。

すべてのコードを表示することはできませんが、linq2indexeddb オブジェクトの新しいインスタンスを作成しましたか?

した場合は、次のことができます。

var db = window.linq2indexedDB("dbName", dbConfig, true);

最後のパラメーターはロギングを有効にし、すべてのログ結果がコンソール出力に出力されます。

別の方法は

linq2indexedDB.prototype.utilities.debug(true);

linq2indexeddb に関して他に質問がある場合は、お知らせください。私はそれを書きました ;)

于 2013-03-08T10:25:43.177 に答える
1

これは、私が使用している linq2indexedDB のバージョンの小さな問題であることが判明しました。定数IDBTransaction.READ_ONLYおよびIDBTransaction.READ_WRITEは非推奨です ( ref )。上記を文字列に置き換えて、それぞれ簡単に検索して置換すると'readonly''readwrite'問題が修正されました。

クリストフは、これを処理するシムもあるかもしれないと述べていますが、codeplexからダウンロードした最新バージョンにはそれがないようです。

于 2013-03-08T12:10:24.817 に答える