Я пытаюсь выяснить, можно ли сериализовать и сохранить ссылку на коллекцию, которую я извлекаю из firebase (в indexedDB), для удобства добавления данных в нее позже.
Мой случай что при загрузке приложений данные из firebase сохраняются в indexedDB, а затем другие страницы / компоненты извлекают данные из indexedDB, вместо того, чтобы отправлять операции чтения в firebase для данных, которые меняются не очень часто, если вообще.
Я получаю коллекцию следующим образом: (Похоже, мне не хватает сохранить фактическую «DocumentReference», хотя и вызывает .ref для коллекции)
public getBusinessUnitCollection$(): Observable<Array<FireStoreBusinessUnitDocumentInterface>> {
return this.afStore.doc<BusinessUnitDataInterface>(`business/${this.afAuth.auth.currentUser.uid}`).collection<BusinessUnitDataInterface>('unit')
.snapshotChanges()
.pipe(
map(
actions => {
return actions.map(a => {
const data = a.payload.doc.data() as BusinessUnitDataInterface;
const id = a.payload.doc.id;
const exists = a.payload.doc.exists;
*** Below is the reference, I have tried to serialize it with "json-stringify-safe" package,
which works for the nested object, BUT I dont get access to 'update' and all the methods
that is available on a original collection reference?
const ref = stringify(this.afStore.doc<BusinessUnitDataInterface>(`business/${this.afAuth.auth.currentUser.uid}`).collection<BusinessUnitDataInterface>('unit').ref);
return {
ref,
data,
id,
exists,
};
});
}
));
}
Позже, когда я делаю JSON. анализируя свойство .ref сверху, при проверке с консоли я получаю следующее:
_query: {path: {…}, collectionGroup: null, explicitOrderBy: Array(0), filters: Array(0), limit: null}
firestore: {_firebaseApp: {…}, _queue: {…}, INTERNAL: {…}, _databaseId: {…}, _persistenceKey: "
[DEFAULT]", …}
_path: {segments: Array(3), offset: 0, len: 3}
__proto__: Object
.update, .id et c не сохраняются: - /
Anyone Имеете опыт сохранения ссылки на коллекцию в виде сериализованной строки для последующего использования?
Спасибо: -)