javascript - 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 中,然后在更新后在数组中添加一个新对象,但它始终无法按预期工作。还有其他方法可以做我想要实现的目标吗?
解决方案
推荐阅读
- python - 如何将列表中的项目附加到python中的字符串上
- flutter - Flutter:无法显示警报对话框
- javascript - 计算两个字段并将结果设置在第三个
- macos - dns-sd注册被接受后没有出现在浏览中
- c++ - C++:具有许多非类型名参数的模板类
- spring-boot - spring-boot-starter-data-jpa 以非零退出值 1 结束
- css - 如何创建此页面转换?
- python-3.x - dict_values 对象没有属性索引
- rest - 在休息时,从语义上如何区分无效 url 返回的 404 与指向不存在资源的好 url 返回的 404?
- java - 如何在不更改 xds 文件的情况下从 CDA 模式创建 POJO 类?