アプリケーションに 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
}
};
}
};