Как правильно обновить документ в IndexedDB? - PullRequest
0 голосов
/ 11 февраля 2020

Существует object store с именем 'data' с keyPath: 'id', структурированные данные показаны ниже

{"id":860,
  "data":{
    "a":[], // json array 
    "b":[], // json array 
    "c":{}, // json object
    "d":{}, // json object
  }
}

, эти структурированные данные не должны дублироваться, и только одна из этих структурированных данных должна быть записана в data объект магазина. Тем не менее, его можно обновлять и расширять.

Для обновления этого документа я до сих пор получал весь документ, добавлял данные, переписывал и заменял старый документ, как показано ниже:

if (data != undefined) {
    data.a.push(obj); <= update 
    var item = { id:860, data: data };
    write('data', item); <= replace on the old document 
}

Хотя этого недостаточно. потому что, когда документ большой, мне нужно получить толстый документ и заменить толстый документ на старый.

Знаете ли вы, как я могу обновить документ с помощью не используется выборка и замена?

Комментарий / ответ

Я не совсем уверен, почему вы хотите, чтобы ОДИН объект сохранял N записей данных вместо N объектов.

Проект был разработан для работы только с 1 экземпляром документа. потому что каждый ID основан на 1 экземпляре идентификатора. следовательно, я должен предотвратить object store от дублирования этого документа, либо старого, либо нового.

Стоит сказать, что другие части кода имеют дело с 1 экземпляром этого документа. в противном случае возникает исключение или смесь старого и нового документа.

но внутри этого одного объекта у вас есть данные, которые растут. Так в чем же смысл более крупного объекта?

. Основная цель наличия единственного экземпляра документа - целостность и упрощение CRUD для indexedDB.

Например: если я разделю ток object store на несколько object store с, это усложнит поддержание indexedDB. потому что, вместо того, чтобы иметь дело с object store, мне приходится иметь дело с несколькими object store s. действительно, будет гораздо сложнее, когда object stores будет постоянно обновляться.

1 Ответ

1 голос
/ 11 февраля 2020

Насколько я знаю, вы должны читать и передавать весь объект при работе с данными IDB. Если вы обнаружите проблемы с производительностью при настройке, возможно, вместо этого разбейте этот большой объект на множество объектов.

...