Я храню объект JSON, включая 18 изображений в IndexedDB. Каждое изображение занимает не более 50 КБ, но почему-то в indexedDB требуется 118 МБ? - Я понятия не имею, почему он такой тяжелый?
Помимо изображений, все это просто JSON, в основном пары ключ/значение с текстом...
Смотрите прикрепленные скриншоты
Я использую DexieJS для работы с IndexedDB.
Функция сохранения в базу данных выглядит так:
export const savePendingSurvey = (id, currentSurvey, surveyAnswers, surveyFiles) => {
const updatedSurvey = {
id: id,
createdAt: new Date(),
status: 'UNSUBMITTED',
surveyVersion: currentSurvey.survey.version,
currentSurvey: {
...currentSurvey.survey
},
currentSurveyAnswers: [
...surveyAnswers
],
currentSurveyFiles: [
...surveyFiles
]
};
db.open().then(() => {
db.pendingSurveys.put(updatedSurvey).then((response) => {
console.log('done adding pending survey', response);
}).then(() => {
return db.pendingSurveys.toArray();
}).then((data) => {
console.log('pendings surveys in db', data);
}).catch((e) => {
if ((e.name === 'QuotaExceededError') ||
(e.inner && e.inner.name === 'QuotaExceededError')) {
// QuotaExceededError may occur as the inner error of an AbortError
alert('QuotaExceeded error! - There are not enough space available on your device');
} else {
// Any other error
console.error(e);
}
});
});
};
Кажется, что каждый раз, когда я делаю простейшее обновление объекта, даже с простым изменением текста, он каждый раз добавляет к элементу от 100 до 300 КБ :/