如何在 firestore 9 模块化中删除特定的键值对?

6 浏览
0 Comments

如何在 firestore 9 模块化中删除特定的键值对?

我有一个对象,我想删除数据集1并保留其他数据集,在当前的嵌套上下文中是否可能?

代码如下:

// Firebase对象模型
tracked: {
  'data-set-1': [11, 3423, 4232, 23324, 123, 3123123],
  'data-set-2': [22, 4434, 4232, 5554, 123, 3123123],
  'data-set-3': [33, 3423, 4232, 23324, 123, 31553123]
}
const deleteData = async() => {
  const docRef = doc(db, 'data-users', currentUser.uid);
  await updateDoc(docRef, {
    tracked: {
      ['data-set-1']: FieldValue.delete()
    }
  });
}

捕获到的错误信息如下:

捕获到的(在Promise中)Firebase错误:函数updateDoc()使用无效的数据调用。deleteField()只能出现在您的更新数据的顶层

图片链接:enter image description here

0
0 Comments

问题原因:在使用deleteField()删除嵌套字段时,需要使用点表示法。

解决方法:在调用deleteField()时,使用点表示法来删除嵌套字段。

具体代码如下:

import { deleteField } from 'firebase/firestore';
await updateDoc(doc(db, 'data-users', currentUser.uid), {
  'tracked.data-set-1': deleteField(),
})

以上是解决在Firestore 9模块化中删除特定键值对的方法。

0