Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 是否有一种基于当前通过uid登录的用户返回数据的有效方法?_Reactjs_Firebase_Redux_Google Cloud Firestore - Fatal编程技术网

Reactjs 是否有一种基于当前通过uid登录的用户返回数据的有效方法?

Reactjs 是否有一种基于当前通过uid登录的用户返回数据的有效方法?,reactjs,firebase,redux,google-cloud-firestore,Reactjs,Firebase,Redux,Google Cloud Firestore,我正在构建一个以Firebase为后端的react redux应用程序。该应用程序允许用户创建帐户,并在此过程中创建公司和用户角色。用户角色包含用户id和公司id。我只想在用户角色与uid匹配的位置同步公司数据 我像这样连接到firestore: firestoreConnect( props => [ { collection : 'company_roles', where: [["user_id", "==", props.au

我正在构建一个以Firebase为后端的react redux应用程序。该应用程序允许用户创建帐户,并在此过程中创建公司和用户角色。用户角色包含用户id和公司id。我只想在用户角色与uid匹配的位置同步公司数据

我像这样连接到firestore:

  firestoreConnect( props => [
      { collection : 'company_roles', where: [["user_id", "==", props.auth.uid]]  }
      { collection : 'company' },
  ]) 


const mapStateToProps = (state) => {
    return {
        auth: state.firebase.auth,
        company_data : state.firestore.ordered.company,
        company_roles : state.firestore.ordered.company_roles,
    }
}
并将状态映射到道具,如下所示:

这会将与uid匹配的角色作为一个对象的数组[{}]返回。现在,当我尝试基于user_角色返回company时,它返回undefined。我是这样做的:

{ collection : 'company', where: [["company_name", "==", props.company_roles.uid]]  },

我被卡住了。做什么或者有更好的方法吗?

实际上,通常的做法是将用户数据存储在名为“用户”的Firestore集合中,其中每个用户文档都是根据用户UID命名的。 查看Javascript示例:

db.collection(“users”).doc(user.uid).get()。然后((快照)=>{
如果(文件存在){
log(“文档数据:”,doc.data());
}否则{
//在这种情况下,将不定义doc.data()
log(“没有这样的文档!”);
}
}).catch((错误)=>{
log(“获取文档时出错:”,错误);
});
您可以在此处阅读更多信息:

只需确保您也熟悉Firestores

如果您需要粒度控制,上述方法是理想的,但是为了更广泛的目的,您可以实现。但是,这确实需要和服务器环境来运行,这很可能需要Blaze计划