0

アプリケーションに Indexed Db を使用しています

2 つのインデックスを追加したテーブル プロダクトがあります。

 var product = evt.currentTarget.result.createObjectStore("product", { keyPath: product_id" });
 product.createIndex("productIndex", "product_id", { unique: true });
 product.createIndex("barCodeIndex", "ean_product", { unique: false });

私のコードでは、最初に product id を検索しています。結果が null の場合は、 bar code を検索しています。問題は、私が書いたコードが Chrome と IE 10 では正常に動作するが、FF では動作しないことです。提案してください。

バーコードで検索しているelse部分では、「var keyBarcode = BarcodeSearch.index("barCodeIndex");」という行があります。例外 「要求されたデータベース オブジェクトが見つからなかったため、操作は失敗しました。たとえば、オブジェクト ストアは存在しませんでしたが、開かれていました。」

   var searchKey = IDBKeyRange.only(productId);
    var productSearch = localDatabase.db.transaction("product").objectStore("product");
    var key = productSearch.index("productIndex");
  key.get(searchKey).onsuccess = function (evt) {
        var productSearchResult = evt.target.result;
        if (productSearchResult != null) {
         //some logic

        } else {
            //search on bar code
            var barcode = $("#txtProductCode").val().trim();
            var barcodeKey = IDBKeyRange.only(barcode);
            var barcodeSearch = localDatabase.db.transaction("product").objectStore("product");

                var keyBarcode = barcodeSearch.index("barCodeIndex");
                keyBarcode.get(barcodeKey).onsuccess = function(event) {
                    var barcodeSearchResult = event.target.result;

                    if (barcodeSearchResult != null) {
                        //some logic                     
                    } 

                };

        }

    };
4

1 に答える 1

0

私は自分で問題を解決しました。

ケーシングに問題がありました。テーブルに作成されたインデックスは「BarCodeIndex」で、「barCodeIndex」を使用しようとしていました。

Point to be noted : Index names are case sensitive
于 2013-10-04T08:45:24.393 に答える