通过复杂的keyPath Yathit(或indexeddb)的一部分获取记录

时间:2014-06-06 09:37:23

标签: indexeddb

我有一个使用[contact_id,datetime]的keyPath的消息的indexeddb存储

我正在努力解决的问题是如何构建一个查询,让我可以拉回contact_id =某个值的所有记录。

1:我接近这个方法是正确的。我只需要根据contact_id搜索记录。我添加的日期时间使记录变得清晰,因为它们需要偶尔更新。

2:如何通过contact_id检索记录? (Yathit或indexeddb示例都很棒。)

1 个答案:

答案 0 :(得分:0)

在联系人ID属性上创建索引,然后遍历索引。

在onupgradeneeded

messageStore.createIndex('contact_id_index','contact_id');

在您的查询代码中

function selectMessagesByContactId(db, contactId, 
    perMessageHandler, onIterationCompleted) {

  var tx = db.transaction('messages');
  tx.oncomplete = onIterationCompleted;
  var store = tx.objectStore('messages');
  var index = store.index('contact_id_index');
  var range = IDBKeyRange.only(contactId);
  index.openCursor(range).onsuccess = function(event) {
   var cursor = event.target.result;
   if(cursor) {
     perMessageHandler(cursor.value);
     cursor.continue();
   }
  };
}