Firebase Cloud Firestore and Functions - хранит документы с массивом объектов

Многостраничный pdf-файл может быть извлечен как текст на одном уровне, а не указывать номер страницы в качестве аргумента, используя ниже код

import PyPDF2
import collections
pdf_file = open('samples.pdf', 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
c = collections.Counter(range(number_of_pages))
for i in c:
   page = read_pdf.getPage(i)
   page_content = page.extractText()
   print page_content.encode('utf-8')
0
задан Jose Antonio 15 January 2019 в 18:13
поделиться

1 ответ

В своем ответе вы говорите, что «в Firebase Firestore тип массива не допускает список объектов».

Это не правильно: вы можете хранить объекты в массиве. В консоли Firebase сначала нужно выбрать тип данных массива, а затем для каждого элемента массива выбрать тип карты. С помощью JavaScript SDK вы можете сохранить документ, содержащий массив объектов.


Исходя из вышеизложенного, вы можете использовать следующий подход при использовании Firestore:

  • иметь коллекцию guide документов
  • для каждого guide документа в этой коллекции:
    • используйте значение id в качестве идентификатора документа;
    • имеет поле sources массива типов, в котором вы храните объекты, подобные тому, который показан в вашем вопросе.

Таким образом, вы можете запросить свой guides по документу id и получить массив следующим образом:

var docRef = db.collection("guides").doc(guideId);

docRef.get().then(doc => {
    if (doc.exists) {
        const sourcesArray = doc.data().sources;
        sourcesArray.forEach((element) => {
            console.log(element.type); 
            console.log(element.url); 
        });
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});
0
ответ дан Renaud Tarnec 15 January 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: