如何在Firebase数据库集合中获取文档的唯一ID(密钥)?

时间:2019-12-23 17:55:56

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

我正在尝试在我的React-Native应用程序中获取集合的文档,但是我不知道如何通过ID(键)来获取它们。 PS:我在文档中没有任何称为唯一ID或ID的字段,但是据我了解,当我创建一个代表该文档名称(20个字符ID)的文档时,唯一ID是自动生成的键。 / p>

这是我获取文档内所有字段的方式:

  var ref = firebase.firestore().collection('discounts')
            .orderBy('rest_id')

编辑

getDiscounts = () => {
    try {
        this.setState({
            loading: true
        })

        var ref = firebase.firestore().collection('discounts')
            .orderBy('rest_id')
            .limit(this.state.limit)

        ref.onSnapshot((querySnapshot => {
            var discounts = querySnapshot.docs.map(document => document.data());

            var lastVisibleDiscount = discounts[discounts.length - 1].rest_id;
            this.setState({
                discounts: discounts,
                lastVisibleDiscount: lastVisibleDiscount,
                loading: false,
            });
        }));

    }
    catch (error) {
        console.log(error);
    }
}

2 个答案:

答案 0 :(得分:1)

要按照其rest_id字段的值的顺序打印集合中文档的键,可以执行以下操作:

firebase.firestore().collection("discounts").orderBy('rest_id').get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        console.log(doc.id);
    });
});

这几乎是getting all documents from a collection文档中代码的文字副本,因此我建议在此花一些时间。

答案 1 :(得分:1)

您可以使用(使用await / async)

const ref = await ref.get()

它将有一个名为docs的数组,您可以对其进行映射以获取文档的ID和数据:

const data = ref.docs.map(doc => {return {id: doc.id, data: doc.data()} })