Firebase:向文档未处理承诺拒绝添加附加集合

oxf4rvwz  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(115)

我目前有一个收藏|文件|集合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 });

}

hwazgwia

hwazgwia1#

不能在查询中调用set
如果要更新具有给定ID的一个文档,请用途:

const leaderboardRef = db.collection('leaderboard').doc(eventId);
await leaderboardRef.set(userLeaderboard, { merge: true });

如果你想更新(可能是多个)与查询匹配的条目,你需要执行查询,循环查询结果,然后依次更新每个文档,但是这里似乎不需要。

相关问题