2015-11-22 21 views
6

Tôi đã dành hàng giờ đồng hồ để tìm kiếm khóa này, và chỉ bằng thử và sai là tôi cuối cùng cũng có thể tìm ra giải pháp. Ghi nhật ký này trong Stack Overflow cho những người tìm kiếm trong tương lai.Cách tạo khóa tổng hợp indexeddb

Q:

Làm thế nào để tạo một khóa composite trong IndexedDB?

phím được tạo ra trong IndexedDB trên các cửa hàng đối tượng sử dụng như sau:

var db; 
var openRequest = indexedDB.open('myDB', 1); 
openRequest.addEventListener('error',() => { 
    console.error('Unable to open db'); 
}); 
openRequest.addEventListener('upgradeneeded', function(event){ 
    var store = db.createObjectStore('myStore', 
     {keyPath: /* composite key */ } 
    ); 
}); 
openRequest.addEventListener('success', function(){ 
    db = openRequest.result; 
}); 

Tôi đã thử đặt các đối tượng, xác định nhiều lần, làm thế nào để tạo một khóa composite, hoặc đây là một hạn chế của API?

Lưu ý: Nếu bạn đang tìm kiếm cách truy vấn một chìa khóa hợp sử dụng một phạm vi, xin vui lòng kiểm tra this bài

+0

Bản sao có thể có của [Trong IndexedDB, có cách nào để tạo truy vấn phân loại được sắp xếp không?] (Http://stackoverflow.com/questions/12084177/in-indexeddb-is-there-a-way-to-make -a-sort-compound-query) – Josh

+0

@Josh Mặc dù bài viết được tham chiếu không nói về chỉ mục tổng hợp, nó chủ yếu tập trung vào IDBKeyRange trong việc chọn một loạt các phần tử. Bài viết cũng không giải thích làm thế nào để tạo ra một khóa chính composite cho một cửa hàng đối tượng Indexeddb và do đó tôi tin rằng bài đăng này không phải là một bản sao. – SnareChops

Trả lời

12

A:

Khi nó quay ra, câu trả lời là rất đơn giản, nhưng không được ghi lại ở bất cứ đâu tôi nhìn, và không rõ ràng ngay từ cái nhìn đầu tiên. Sử dụng một chuỗi các chuỗi ...

var store = db.createObjectStore('myStore', 
    {keyPath: ['id1', 'id2']} 
); 

Chỉ mục tổng hợp cũng có thể được tạo theo cùng một kiểu.

Các vấn đề liên quan