Reactjs 使用firebase中的现有值更新集合

Reactjs 使用firebase中的现有值更新集合,reactjs,firebase,google-cloud-firestore,Reactjs,Firebase,Google Cloud Firestore,我正在用firebase开发react web应用程序,现在我遇到了这个问题。所以我想要的是用现有数据更新集合。例如,假设集合中已经存在以下详细信息 org_details: { general: { org_name: "ane", founder: "fng" }, group:{ admin:{ <details of the admin grp> }, standard:{ <

我正在用firebase开发react web应用程序,现在我遇到了这个问题。所以我想要的是用现有数据更新集合。例如,假设集合中已经存在以下详细信息

org_details: {
   general: {
     org_name: "ane",
     founder: "fng"
   },
   group:{
     admin:{
       <details of the admin grp>
     },
     standard:{
       <grp details>
     }
   }
}
但这个查询似乎不像我想要的那样。它总是创建一个名为groupName的组,而不是从参数传递的组名,并且总是替换现有数据。如何更改查询以获得所需的结果


我正在使用firebase中的firestore作为数据库。

当您尝试动态分配属性键时,您需要将其包装在[groupName]:{…}中以获取变量groupName,而不仅仅是字符串“groupName”

至于执行深度合并,例如,仅更新子组(如果存在),如果不创建新组而不删除其他组,则当前api不可能执行此操作,但您也可以

选项1首先自己从数据库中读取数据,并在编写之前手动处理合并。您可以编写自己的函数或使用类似的包


选项2更贴切一些,例如使用子集合来存储组

哦,谢谢。另一个问题的解决方案是什么?另一个问题是什么?您是否已按上述方式实现并收到其他错误?因此,我需要为现有组详细信息添加另一个组。例如,集合中已经有admin和standarg组,我需要将另一个名为sample的组添加到同一个列表OK,我明白了。。。所以有点像“子补丁”或“深补丁”。我很确定本机api方法不支持这一点,因此有两个选项,一个是从db读取文档并自己执行补丁,另一个是重新构造数据以使其更平滑,例如使用子集合。如果这有道理的话
export const createGroup = (data, history) => async (
  dispatch,
  getState,
  { getFirestore }
) => {
  const firestore = getFirestore();
  const { email: userEmail } = getState().firebase.auth;
  const groupName = data.groupName;
  dispatch({ type: actions.CREATE_GROUP_START });
  try {
    firestore
      .collection("org")
      .doc(userEmail)
      .update({
        "group": {
          groupName: {
            org_grp_admin: data.org_grp_admin,
            org_grp_users: data.org_grp_users
          }
        }
      })
      .then(() => {
        getOrgData(dispatch, getState, { getFirestore });
        history.push("/groupmanagement");
      });
    dispatch({ type: actions.PROFILE_EDIT_SUCCESS });
  } catch (err) {
    dispatch({ type: actions.CREATE_GROUP_FAILS, payload: err.message });
  }
};
"group": {
          [groupName]: {
            org_grp_admin: data.org_grp_admin,
            org_grp_users: data.org_grp_users
          }
}