Как я могу получить конкретные данные документа из пожарного магазина querysnapshot? - PullRequest
0 голосов
/ 05 июня 2018

Я получил 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?

Ответы [ 2 ]

0 голосов
/ 11 августа 2019
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

0 голосов
/ 05 июня 2018

Вы можете получить массив снимков документа, используя свойство docs для 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
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...