首页 > 解决方案 > FIRESTORE:链接更新以修改对象数组无法正常工作

问题描述

我在firebase中有一个名为messages的数组,它存储如下对象:

{ 
   userId: userId,
   messageDocumentId: messageDocumentId,
   unreadMessages: 0,
}

我正在尝试更改我将在 React 组件中使用的 unreadMessages 字段的值。

由于 firestore 不支持更新数组元素对象的字段,因此我尝试删除数组中对应 userId 的对象,并添加另一个具有更新的 unreadMessages 字段值的对象,例如:

  const resetMyMessageObject = async() => {
    if (messageDocumentId) {
      const messageObject = getSendersMessageObject();
      if (messageObject !== undefined) {
        const docRef = db.collection('users').doc(currentUser.uid);
        async docRef.update({
            messages: firebase.firestore.FieldValue.arrayUnion({
              userId: selectedUid,
              messageDocumentId: messageDocumentId,
              unreadMessages: 0,
            }),
          })
      
        async docRef.update({
            messages:
              firebase.firestore.FieldValue.arrayRemove(messageObject),
        });
         
      }
    }
  };

它有时不会添加文档,但会删除数组中的旧对象。我还尝试将要删除的更新链接到 .then 中,然后在更新后在数组中添加一个新对象,但它始终无法按预期工作。还有其他方法可以做我想要实现的目标吗?

标签: javascriptarraysreactjsobjectgoogle-cloud-firestore

解决方案


推荐阅读