我目前有一个收藏|文件|集合Firestore。我想在文档中搜索一个特定的集合,如果用户ID匹配,则更新。如果用户ID不在集合中,则我想添加一个新集合。
集合更新方面工作正常,但是在通过.set()添加到集合时得到Promise Rejection。
if (!query.empty) {
console.log('event leaderboard exists in db');
for (let i in leaderboard) {
const result = leaderboard[i].data();
for (let y in result) {
const userLeaderboard = result[y];
if (userLeaderboard.uid === currentUser.uid) {
// User exists in record and update score
return query.docs[i].ref.update({
score: increaseBy,
});
} else {
// User does not exist and need to add to record
addUserToLeaderboard();
}
}
}
...
const addUserToLeaderboard = async() => {
let userLeaderboard = {
uid: currentUser.uid,
score: currentTrivia.points,
banned: false,
};
const leaderboardRef = db.collection('leaderboard').where(firebase.firestore.FieldPath.documentId(), '==', eventId);
await leaderboardRef.set(userLeaderboard, { merge: true });
}
1条答案
按热度按时间hwazgwia1#
不能在查询中调用
set
。如果要更新具有给定ID的一个文档,请用途:
如果你想更新(可能是多个)与查询匹配的条目,你需要执行查询,循环查询结果,然后依次更新每个文档,但是这里似乎不需要。