Reactjs 使用firebase中的现有值更新集合
我正在用firebase开发react web应用程序,现在我遇到了这个问题。所以我想要的是用现有数据更新集合。例如,假设集合中已经存在以下详细信息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:{ <
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
}
}