Прежде всего, что это должно делать?
for (let res in data[currency]) {
countryStore.put(
data[currency],
data[currency][res]["currencyId"]
);
}
Потому что в настоящее время он «хранит данные [валюту] в моей базе данных N раз с N различными первичными ключами». Это почти наверняка не то, что вы хотите сделать. Если вы хотите иметь возможность искать запись в базе данных на основе нескольких разных ключей, которые хранятся в массиве, используйте индекс multiEntry.
Ошибка заключается в том, что вы явно указываете первичный ключ (второй параметр put
), когда хранилище объектов ожидает, что первичный ключ будет присутствовать в качестве свойства самого объекта данных. Вот что делает параметр keyPath
для createObjectStore
. Если ваш keyPath равен «что угодно», то в data[currency].whatever
он найдет первичный ключ.
Таким образом, вы можете избавиться от сообщения об ошибке, изменив свой код так:
for (let res in data[currency]) {
countryStore.put(
data[currency]
);
}
Но это почти наверняка не то, что вы хотите сделать, потому что он будет просто записывать одни и те же данные в базу данных N раз с одним и тем же первичным ключом, в результате чего в базе данных будет только один объект и куча потерянного времени. пишу это неоднократно. Если вы хотите получить один объект в базе данных, вы можете просто сделать это:
countryStore.put(data[currency]);
И затем, если вам нужно запросить его по-разному, используйте индексы.