Хранить базу данных Dexie в хранилище Tampermonkey

Я использую скрипт TamperMonkey в FireFox со следующими библиотеками: jQuery 2.1.4, Dexie.js, json2html 1.2.0 и Bootstrap 3.4.0. Я пытаюсь сохранить объект Dexie (для базы данных Dexie) в локальном хранилище TamperMonkey с помощью GM.setValue('unique-dexie-db-name', dexieDBvariable); Однако, когда я иду, чтобы получить это значение (например, я сохраняю это на google.com и получаю это на yahoo.com ) с var dexieDB = GM.getValue('unique-dexie-db-name'); Мое возвращаемое значение объекта не является объектом базы данных Dexie, а скорее чем-то другим, что я не могу использовать в качестве базы данных.

Мой вопрос: я не уверен, но я думаю, что при сохранении этой базы данных Dexie в TamperMonkey она сохраняется в виде строки, и я должен попытаться как-то полностью преобразовать объект в строку, чтобы иметь возможность воспроизводить и воссоздавать его, когда Мне это нужно в вызове GM.getValue(). Как сохранить этот объект Javascript в виде строки, чтобы иметь возможность снова получить значение в целом позже?


person Nick Bell    schedule 13.09.2019    source источник
comment
Это, вероятно, обман q, но вам нужно JSON.stringify() то, что вы храните с помощью setValue. Затем JSON.parse() то, что вы получите с помощью getValue.   -  person Brock Adams    schedule 13.09.2019
comment
Спасибо за ответ. Я заметил, что в дублировать ссылку на вопрос, что сложные объекты не могут быть преобразованы в строку или проанализированы, так как они теряют мелкие детализированные свойства. Вы случайно не знаете, было ли это изменено с 2016 года (год, когда был задан вопрос) или, возможно, мне следует изучить альтернативные маршруты - например, загрузить и сохранить всю БД перед GM.setValue, а затем перезагрузить ее при вызове GM.getValue - чтобы записи данных сохранились?   -  person Nick Bell    schedule 13.09.2019
comment
Попробуйте сохранить свои данные. Если это не сложный DOM и не рекурсивный, он должен работать.   -  person Brock Adams    schedule 14.09.2019
comment
Я создал новый объект Dexie, открыл его и добавил в него запись. Мои результаты не были многообещающими, так как после сохранения объекта Dexie с помощью JSON.stringify() возникли ошибки, а затем попытка загрузить новый объект Dexie и извлечение с помощью JSON.parse(). Я надеялся на простой подход, но, возможно, есть метод Декси, специфичный для этой проблемы? или, возможно, мне следует попытаться извлечь все записи в формате json из БД, затем сохранить необработанные данные json в TamperMonkey с помощью GM.setValue и загрузить все необработанные данные обратно, когда потребуется доступ к базе данных Dexie с помощью GM.getValue ()?   -  person Nick Bell    schedule 14.09.2019
comment
Не могу сказать без конкретики. Если вы можете сделать ссылку на определенную общедоступную страницу и/или создать минимально воспроизводимый пример, откройте новый вопрос. В противном случае это слишком широко.   -  person Brock Adams    schedule 14.09.2019
comment
Вот мой пример сценария вкратце: gist.github.com/n-bell/b375c80b638d3a59a250e903afb4a36b. js -- должен ли я создать новый вопрос на основе моего оригинала с дополнительными деталями сути?   -  person Nick Bell    schedule 14.09.2019
comment
Возможно, но этот пример не анализирует JSON GM.getValue(tmObj) по крайней мере в 1 экземпляре, где это необходимо.   -  person Brock Adams    schedule 14.09.2019
comment
О, черт, хорошо, я повторю свою процедуру отладки, так как я не думаю, что сразу понял, где это. Я знаю, что «tmDBObj» — это обещание, и его не нужно анализировать. Я также попытался переключить let openDBFromFile = JSON.parse(data); в единственном случае else во фрагменте — подумал, что это могло быть там, где мне это было нужно, поскольку функция, возвращаемая исходным обещанием «tmDBObj», имеет data в возвращаемой функции — но это дало мне ошибку при попытке запросить его - TypeError: openDBFromFile.logHistory.where is not a function - любые намеки или подсказки?   -  person Nick Bell    schedule 14.09.2019
comment
Откройте новый вопрос здесь или на codereview.   -  person Brock Adams    schedule 14.09.2019
comment
ура - stackoverflow.com/questions/57938009/   -  person Nick Bell    schedule 14.09.2019