文档 ID 未知时如何监听 firestore 文档中的更改

How to listen to changes in a firestore document when doc id is unknown

仅供参考;我已经检查了之前提出的所有问题,其中 none 与我的问题直接相关。我在一个集合中有文档,我正在尝试收听文档的更改。我首先使用 get() 检索集合中的所有文档,然后遍历所有文档以听取更改。这可能是错误的方法,但我在文档或网上找不到任何其他内容。

我的问题是,因为我首先使用 get(),除非我手动刷新,否则不会调用 onSnapshot 侦听器。我试图让它在发生变化时自动显示变化。例如,如果我将文档添加到集合中,我希望它为 运行。

这是我的代码:

const db = firestore().collection('Networks');

const NetworksListScreen = ({ navigation }) => {

    const [state, setState] = useState({ networks: [] });

    const { networks } = state;

    const getNetworks = async () => {
        try {
            await db.get().then((querySnapshot) => {
                let networks = [];
                querySnapshot.forEach(doc => {
                    db.doc(doc.id).onSnapshot(newDoc => {
                        console.log(newDoc.id, '=====>', newDoc.data());
                        networks.push(doc.data());
                    });
                });
                setState({
                    networks: networks
                });
            });
        } catch (err) {
            console.log(err)
        }
    };

    useEffect(() => {
        getNetworks();

    }, []);
}

非常感谢任何帮助。

对整个集合使用 onSnapshot 会容易得多(CollectionReference 是查找所有文档的查询)。您收到的快照将包含自上次调用侦听器以来更改(添加、更改或删除)的每个文档的信息。

firestore().collection('Networks').onSnapshot(querySnapshot => {
    // handle changes to documents in the collection here
})