我尝试从firestore中的数组中删除一个对象,但遇到了一个障碍,执行删除操作的要求或引用是什么?对象中的一个键值是否足以执行删除操作,或者该对象是否应与要删除的对象相同?
const deleteWeek = async () => {
const docRef = doc(db, 'Weeks', id);
await updateDoc(docRef, {
weeks: arrayRemove({
weekId: '7518005f-7b10-44b6-8e0a-5e41081ee064',
}),
});
};
deleteWeek();
}
但是,数据库中周如下所示
{name ,"Week 2"
days : [/*data all kinds*/]
weekId : "7518005f-7b10-44b6-8e0a-5e41081ee064"}
2条答案
按热度按时间jaxagkaj1#
如果它是一个对象数组,那么你需要知道整个对象来使用
arrayRemove()
。例如,如果一个文档看起来像这样:您必须在
arrayRemove()
中传递整个week对象,将这些数据存储在子集合中可能更好,这样您就可以查询/删除特定的数据。jhdbpxl92#
由于firestore中没有只删除array中一个元素的函数,因此需要让arrayRemove引用要删除的同一个对象,然后创建一个新对象,并使用arrayUnion方法插入
就我而言,我习惯于
更新后,它可能如果错误发生.如果错误发生,你需要所有的工作取消.这种情况下,你可能想使用批处理方法
希望能帮到你