有什么方法可以从Firebase / firestore中的数组更新特定索引吗?
export const editComment = (comment) => {
return (dispatch, getState, { getFirebase, getFirestore }) => {
const firestore = getFirestore();
firestore.collection('topics').doc(comment.topicId).update({
comments: <--- this is array of objects
}).then(() => {
dispatch({ type: 'EDIT_COMMENT' })
}).catch((error) => {
dispatch({ type: 'EDIT_COMMENT_ERROR', error})
})
}
}
答案 0 :(得分:1)
有什么方法可以从Firestore中的数组更新特定索引吗?
不,没有!这是不可能的,因为如果要执行更新,则需要知道该特定元素的索引。在谈论Cloud Firestore阵列时,您可能会想到不同的事情。
由于我们正在创建可在多用户环境中使用的应用程序,因此请尝试考虑如果用户想要编辑索引0处的值,而另一些用户想要删除索引0处的值会发生什么情况?同时,其他用户可能想在索引0处添加另一个项目。当然,您最终将获得截然不同的结果,为什么不这样做,甚至会使数组超出范围异常。因此,带有数组的Firestore操作有点不同。因此,您无法执行诸如在特定索引处插入,更新或删除操作。
如果这两种方法不能为您提供足够的帮助,则应获取整个文档,获取数组,对其进行修改并将其添加回数据库中。
答案 1 :(得分:1)
将数组变成它自己的单独文档,并在那里更新字段。那就是我所做的。为此,我不得不重新构建数据库。