Вопрос:

Как я могу получить конкретные данные документа из пожарного магазина querysnapshot?

firebase google-cloud-firestore google-cloud-functions

3445 просмотра

2 ответа

1310 Репутация автора

Я получил Querysnapshot в функции. И хочу привести весь querysnapshot к другой функции (functionTwo). В функции два я хочу получить конкретный документ в querysnapshot БЕЗ forEach. Конкретный документ может быть изменен в другом случае.

ref_serial_setting.get()
    .then(querysnapshot => {
      return functionTwo(querysnapshot)
    })
    .catch(err => {
      console.log('Error getting documents', err)
    })


let functionTwo = (querysnapshot) => {
  // getting value

  const dataKey_1 = "dataKey_1"

  // Tried 1
  const value = querysnapshot.doc(dataKey_1).data()

  // Tried 2
  const value = querysnapshot.document(dataKey_1).data()

  // Tried 3 (Put 'data_name': dataKey_1 in that doc)
  const value = querysnapshot.where('data_name', '==', dataKey_1).data()
}

В результате все эти попытки не являются функцией.

Как я могу получить конкретные данные документа из querysnapshot ??

или же

Есть ли простой способ изменить querysnapshot на JSON?

Автор: Mike Yan Источник Размещён: 05.06.2018 04:46

Ответы (2)


6 плюса

732 Репутация автора

Решение

Вы можете получить массив снимков документа, используя docsсвойство a QuerySnapshot. После этого вам нужно будет циклически получать данные из снимков документа в поисках документа.

const docSnapshots = querysnapshot.docs;

for (var i in docSnapshots) {
    const doc = docSnapshots[i].data();

    // Check for your document data here and break when you find it
}

Или, если вам на самом деле не нужна полная версия QuerySnapshot, вы можете применить фильтр с помощью whereфункции перед вызовом getобъекта запроса:

const dataKey_1 = "dataKey_1";    
const initialQuery = ref_serial_setting;
const filteredQuery = initialQuery.where('data_name', '==', dataKey_1);

filteredQuery.get()
    .then(querySnapshot => {
        // If your data is unique in that document collection, you should
        // get a query snapshot containing only 1 document snapshot here
    })

    .catch(error => {
        // Catch errors
    });
Автор: Peza Размещён: 05.06.2018 06:46

0 плюса

298 Репутация автора

let citiesRef = db.collection('cities');
let query = citiesRef.where('capital', '==', true).get()
  .then(snapshot => {
    if (snapshot.empty) {
      console.log('No matching documents.');
      return;
    }  

    snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data());
    });
  })
  .catch(err => {
    console.log('Error getting documents', err);
  });

со страницы https://firebase.google.com/docs/firestore/query-data/get-data

Автор: Muhammed Moussa Размещён: 11.08.2019 08:23
Вопросы из категории :
32x32