【问题标题】:How to get document from a collection based on a field with firestore?如何从基于带有firestore的字段的集合中获取文档?
【发布时间】:2021-01-03 20:02:39
【问题描述】:

我正在使用 Firestore 和 React,我遇到以下情况。
我有 2 个集合:ordersusers
每个订单都有一个名为 userId 的字段,基于此我必须检索 users 集合 中的用户信息。
正如我所看到的,我有 2 个承诺:一个是获取订单,然后使用 for 循环,获取 userId 并再次获取用户信息。
所以我必须结合2个对象。
在订单对象中,我还需要用户详细信息

我试过了,但它不起作用。

  useEffect(() => {
    firestore()
      .collection(`orders`)
      .get()
      .then(result => {
        let data = result.docs.map(function(p) {
          return firestore()
            .collection(`users`)
            .doc(p.data().orderId)
            .get()
            .then(function(user) {
    
             
              return {id: user.id,  user.data()};
            });
        });
        Promise.all(data).then(function(values) {
          
          console.log(values);
        
         
        });
      });
  }, []);

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore promise


    【解决方案1】:

    我们没有任何关于它为什么不工作的信息......是否有任何错误或者它只是没有显示任何内容。

    无论如何,我在我的测试 Firestore 中创建了相同的结构,并直接在 nodejs 中使用了您的代码(所有这些都在 useEffect 中),只发现一个错误。最后返回的是SyntaxError: Unexpected token .

    我已将其更正为:

    return {id: user.id,  data: user.data()};
    

    现在代码在控制台日志中返回值。这可能是原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-17
      • 2021-11-04
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多