【发布时间】:2022-01-20 14:28:39
【问题描述】:
我有我当前的代码
let array = {};
array[date] = [
{
Name: Name,
Cell: Cell,
Age: Age,
userId: userId,
Time: time,
Type: type,
read: false,
},
];
但每次我为同一日期添加新条目时,它都会覆盖现有数据。我希望将数据添加到地图“1”等,而不是覆盖地图“0”中的数据
更新:我已尝试以下操作,但收到错误消息。不知道我这样做是否正确,我还在学习。
let array = {};
array[date] = [];
try {
await firebase
.firestore()
.collection("Notifications")
.doc(`${helper}`)
.update(
{
array: firebase.firestore.FieldValue.arrayUnion({
Name: Name,
Cell: Cell,
Age: Age,
userId: userId,
Time: time,
Type: type,
read: false,
}),
},
{ merge: true }
);
} catch (e) {
alert(e);
console.log(e);
}
通过推送更新:
// at beginning of script
let array = {};
// later, when you want to add to it
if (!array[date]) {
array[date] = [];
}
array[date].push({
Name: Name,
Cell: Cell,
Age: Age,
userId: userId,
Time: time,
Type: type,
read: false,
});
try {
await firebase
.firestore()
.collection("Notifications")
.doc(`${helper}`)
.set(
array,
{ merge: true }
);
} catch (e) {
alert(e);
console.log(e);
}
},
解决方案:
try {
await firebase
.firestore()
.collection("Notifications")
.doc(`${helper}`)
.update({
[date]: firebase.firestore.FieldValue.arrayUnion({
Name: Name,
Cell: Cell,
Age: Age,
userId: userId,
Time: time,
Type: type,
read: false,
}),
});
} catch (e) {
alert(e);
console.log(e);
}
【问题讨论】:
-
你能分享你的代码没有按预期工作吗?
-
这是一个对象,而不是一个数组。
-
@Dharmaraj 我已经更新了问题
-
去掉
{merge: true}...只有在使用set()时才能使用 -
使用第一个,但要么将
update更改为set,要么从更新中删除{merge: true}
标签: javascript firebase react-native google-cloud-firestore