Изменилось ли что-то в способе хранения объектов в indexedDB, по крайней мере, в Firefox?
Теперь я замечаю, что на вкладке хранилища инструментов разработчика появляется "_proto_". Я не особо задумывался об этом, пока не заметил странное поведение в моей программе, которое я не мог понять.
Я думал, что объекты были клонированы перед записью в базу данных, так что независимо от того, как они были созданы, они были независимыми. Например, когда база данных создается впервые, добавляются некоторые объекты сопоставления; и, поскольку несколько из них имеют одинаковый макет / структуру, ссылка на один объект используется многократно, как показано ниже.
Когда страница загружается, данные сопоставления считываются в ОЗУ и используются для управления назначением ключи базы данных. Если я действительно не запутался, похоже, что prop_3 - prop_7 сохраняют общую ссылку при последующем извлечении из базы данных при перезагрузке страницы, так что если одно из свойств в prop_3 обновляется, то же свойство обновляется в prop_3 через prop_7.
Так оно и должно работать? Я ожидал, что prop_3 - prop_7 больше не будет использовать общую ссылку после записи и чтения из базы данных.
Если это верно, могут ли объекты быть записаны в базу данных таким образом, чтобы эти типы общих ссылок не сохранится? Конечно, я понимаю, что их можно назначить по-другому, не используя ссылку на repeat_object; и, по сути, это исправляет конкретную проблему c для меня. Спасибо.
repeated_object = { ...property : value... };
os.add( { 'prop_1' : 1,
'prop_2' : 2,
'prop_3' : repeated_object,
'prop_4' : repeated_object,
'prop_5' : repeated_object,
'prop_6' : repeated_object,
'prop_7' : repeated_object } );