使用Firebase存储URL更新Firebase数据库数据

时间:2018-09-13 23:59:03

标签: firebase firebase-realtime-database firebase-storage

这是我的情况。我有一个POJO类,我们称它为Car,声明如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait

firstName = input('Insert your first name: ')
lastName = input('Insert your last name: ')

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
browser.get('https://www.bop.gov/inmateloc/')
browser.implicitly_wait(2)
browser.find_element_by_css_selector("#ui-id-1").click()
browser.find_element_by_css_selector('#inmNameFirst').send_keys(firstName)
browser.find_element_by_css_selector('#inmNameLast').send_keys(lastName)
browser.find_element_by_css_selector('#searchNameButton').click()
WebDriverWait(browser, 5).until(expected_conditions.text_to_be_present_in_element((By.XPATH, '//*[@id="nameBriefTd"]'), 'Results for search'))

for row in browser.find_elements_by_xpath('//*[@id="inmateTable"]/tbody/tr'):
    for cell in row.find_elements_by_xpath('td'):
        print(cell.text)
    print()

browser.close()

在该类中,List 图片应该具有指向我实际上上传图片的Firebase存储的链接。由于Firebase函数的异步根,我在执行此操作时遇到问题。 首先,该图片列表具有到图片的本地路径,因为在用户完成向Firebase数据库添加记录所需的所有步骤之前,我不希望用户上传任何内容。因此,我只保存图像的本地路径。但是,一旦将数据保存到云中,我当然需要将这些图像实际上传到Firebase存储并更新Firebase数据库中的相应字段。

我一直在尝试做这样的事情:

public class Plan{
private String id;
private String userId;
private List< String > pictures;
}

我应该如何做才能在Firebase数据库中上传所有图片并更新所有字段?

1 个答案:

答案 0 :(得分:0)

您可能最终会将putFile()返回的所有Task对象收集到一个列表中,然后将其传递到Tasks.whenAll()以获取另一个指示所有上传完成时间的Task。您可以从所有这些成功的任务中获取URL,以填充数据库。安排所有这些工作将是很简单的代码,并且您一定应该熟悉Play services task api才能做到这一点。