Firestore-如何在React Native中通过ID获取文档

时间:2019-08-03 07:52:36

标签: javascript firebase react-native google-cloud-firestore

当我尝试使用代码从Firestore通过ID获取文档时,标题就说明了一切

firestore.collection('my_collection').get('foo')
      .then(snapshot => {
        snapshot.forEach(doc => {
          const data = doc.data();
          console.log(doc.id, data);
        });
      })
      .catch(err => {
        console.log('Error getting documents', err);
      });

它引发了这个错误:

FirebaseError: FirebaseError: Function Query.get() requires its first argument to be of type object, but it was: "foo"

因此,我提供了一个ID为{id: "foo"}的对象 这给了我另一个错误:

FirebaseError: FirebaseError: Unknown option 'id' passed to function Query.get(). Available options: source

如何通过ID从集合中获取文档?

2 个答案:

答案 0 :(得分:2)

firestore的get方法不接受任何参数。

您需要使用doc方法传递ID,如here

firestore.collection('my_collection').doc('foo').get()
      .then(snapshot => {
        snapshot.forEach(doc => {
          const data = doc.data();
          console.log(doc.id, data);
        });
      })
      .catch(err => {
        console.log('Error getting documents', err);
      });

答案 1 :(得分:0)

解决方案

获取 id 并分配给新的 {key: value}

Se 代码如下

enter image description here

        firestore()
          .collection('products')
          .where('category', 'in', categories)
          .get()
          .then(docs => {
            docs.forEach(doc => {
              const data = doc.data()

              // adding new property id with id from Firestore
              data.id = doc.id
              
              newProducts.push(data)
            })
            setProducts(newProducts)
          })
          .catch(err => console.log(err))