2017-02-21 23 views
2

В моем приложении для Android я использую вентилятор на стороне клиента, чтобы одновременно загружать данные в несколько мест в базе данных, чтобы избежать проблем, например, в случае потерянного подключения к Интернету. Вот пример кода из Firebase блога:Загрузка в базу данных и хранение одновременно в Firebase

Map updatedUser = new HashMap(); 
newPost.put("name", "Shannon"); 
newPost.put("username": "shannonrules"); 

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/"); 

Map fanoutObject = new HashMap(); 
fanoutObject.put("https://stackoverflow.com/users/1", updatedUser); 
fanoutObject.put("/usersWhoAreCool/1", updatedUser); 
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser); 

ref.updateChildren(fanoutObject); // atomic updating goodness 

Но теперь я хотел бы, чтобы загрузить файл изображения для хранения вместе с этими данными. Возможно ли это сделать одновременно?

+0

Как сказал Седрик, нет возможности записать несколько функций Firebase за одну операцию. –

ответ

2

Я не думаю, что вы можете синхронизировать звонки в базу данных и хранилище Firebase. В документации это нигде не упоминается.

Но только что вы знаете: Firebase сохранит любые запросы, сделанные updateChildren(), в кеш, если они не могут быть отправлены из-за потери соединения. Когда пользователь снова подключится, Firebase отправит все кэшированные запросы в том же порядке, в котором они были сохранены.

0

Один из способов выполнения этих двух задач одновременно должен был сначала определить ваш путь к файлу в хранилище и начать загрузку, а затем использовать этот путь к файлу для обновления базы данных. Это примерно так же хорошо, как и вы.

Однако большую часть времени вы хотите сохранить «загружаемый URL» загруженного файла в базе данных, а не путь в вещевом хранилище. Это упрощает клиентам доступ непосредственно к контенту без необходимости «поиска» URL загрузки. В этом случае вам действительно нужно дождаться завершения загрузки хранилища, получить URL-адрес загрузки из UploadTask, а затем обновить базу данных этой строкой. Вы не можете узнать URL загрузки до. Загрузка завершена.