Я создаю объект чата с использованием ссылок Firestore, а затем сохраняю этот объект в asyncStorage (включая ссылки, которые я использовал) для загрузки в будущем.
При загрузке объекта из хранилища и попытке доступа к немуссылки, я получаю сообщение об ошибке: chat.messagesRef.orderBy("createdAt", "desc").onSnapshot(onMessagesUpdate);
Объект чата:
{
id: someID,
messagesRef: someFirebaseRefObject
}
Пример справочной функции, которую я хотел бы сохранить в хранилище:
firebase.firestore().collection('users').doc(chatID).collection('chats').doc(currentUser.id)
Мой код для сохранения и загрузки чатов выглядит следующим образом:
export const loadChat = async(chatData, chatID, chatType) => {
try {
const chat = await AsyncStorage.getItem(`@chats/${chatID}`)
if(chat !== null) {
const chatObj = encycle(JSON.parse(chat))
console.log('chatObj:', chatObj)
return chatObj
} else {
return syncChat(chatData, chatID, chatType)
}
} catch(e) {
console.log(e)
return false
}
}
export const storeChat = async(chatID, chat) => {
try {
let chatObj = JSON.stringify(decycle(chat));
if (chatObj){
await AsyncStorage.setItem(`@chats/${chatID}`, chatObj)
}
return chat
} catch (e) {
console.log(e)
return false
}
}
syncChat - это функция, которая извлекает данные с помощью недавно созданных ссылок, что хорошо работает.Но возврат chatObj из loadChat приводит к ошибке.
Как сохранить эталонные объекты пожарного хранилища, чтобы я мог загрузить их из хранилища и совершать звонки?
Ошибка:
blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:62559 Possible Unhandled Promise Rejection (id: 0):
TypeError: TypeError: chat.messagesRef.orderBy is not a function
This error is located at:
in App (at CodePush.js:578)
in CodePushComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in RCTView (at View.js:45)
in AppContainer (at renderApplication.js:33)
TypeError: TypeError: chat.messagesRef.orderBy is not a function
This error is located at:
in App (at CodePush.js:578)
in CodePushComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in RCTView (at View.js:45)
in AppContainer (at renderApplication.js:33)
at App._this.snapshotChatMessages (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:86747:26)
at App.<anonymous> (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:86727:25)
at callCallback (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:12900:18)
at commitUpdateEffects (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:12933:13)
at commitUpdateQueue (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:12921:9)
at commitLifeCycles (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:17344:17)
at commitAllLifeCycles (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:18567:13)
at Object.invokeGuardedCallbackImpl (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:8320:16)
at invokeGuardedCallback (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:8411:37)
at commitRoot (blob:http://localhost:8081/38c013ea-1bea-4338-87e7-3bdf733837b6:18743:13)