Chúng tôi đang xây dựng một ứng dụng sử dụng rộng rãi IndexedDB trên Firefox để lưu trữ dữ liệu ngoại tuyến.Lỗi "Thao tác không thành công vì không thể tìm thấy đối tượng cơ sở dữ liệu được yêu cầu ..." khi sử dụng indexedDB
này hoạt động tốt hầu hết thời gian nhưng đôi khi không thành công với các lỗi như sau:
Exception... "The operation failed because the requested database object could
not be found. For example, an object store did not exist but was being opened."
code: "3" nsresult: "0x80660003 (NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR)"
Có vẻ như thất bại ở những nơi khác nhau trong các mã; đây là một trong những thủ phạm:
_writePage: (storeName, startIndex, endIndex, binder) ->
writeTransaction = @connection.transaction([storeName], @idbTransaction.READ_WRITE)
store = writeTransaction.objectStore(storeName)
for index in [startIndex...endIndex] when (item = binder.list[index])?
writeRequest = store.put(item)
writeRequest.onerror = binder.failCallback()
writeRequest.onsuccess = binder.successCallback()
if endIndex >= binder.list.length
binder.finishedRegisteringCallbacks()
return
setTimeout((=> @_writePage(storeName, endIndex, endIndex + @WRITE_EACH_PAGE_SIZE, binder)), @WRITE_EACH_PAGE_DELAY)
null
Điều mà tôi bối rối là những thất bại xảy ra thường xuyên, trong kiểm tra tự động mà thường làm việc (chúng ta đang thấy một trong những thất bại mỗi hàng trăm hành).
Điều đáng nói là chúng tôi cũng lưu trữ nhiều dữ liệu, theo thứ tự hàng trăm megabyte.
Tắt các kiểm tra tự động chỉ lưu trữ vài megabyte, vì vậy nó không phải là vấn đề về kích thước.
Có ai khác có kinh nghiệm (hoặc tốt hơn, kinh nghiệm và cố định!) Vấn đề này?
Cảm ơn - nhưng nó đã xảy ra trong sản với chỉ một tab duy nhất trong một phiên bản trình duyệt duy nhất. –