Firebase(Vue)按(多)子值获取

Firebase(Vue)按(多)子值获取,firebase,vue.js,google-cloud-firestore,Firebase,Vue.js,Google Cloud Firestore,我从firebase收藏中获得所有游戏。此游戏集合如下所示: { zgaHRO2yW6lafg1ubz4y : { // This is a game createdOn: Timestamp, finished: false, game: "TNhII8jDU23GUZyyqH5X", players: { NJ2U5MwVAIww6TWkHMv2: true, lfNFlK

我从firebase收藏中获得所有游戏。此游戏集合如下所示:

{
    zgaHRO2yW6lafg1ubz4y : { // This is a game
        createdOn: Timestamp,
        finished: false,
        game: "TNhII8jDU23GUZyyqH5X",
        players: {
            NJ2U5MwVAIww6TWkHMv2: true,
            lfNFlKnsbuUJGwINcJ4RMXbNVfs1: true
        },
        startedBy: "lfNFlKnsbuUJGwINcJ4RMXbNVfs1"
    },
    QSkjMQS1232ezklmqKSDJoi : { // This is a game
        createdOn: Timestamp,
        finished: false,
        game: "TNhII8jDU23GUZyyqH5X",
        players: {
            AQSDNJ2U5MwVAIwWkHMv2: true,
            lfNFlKnsbuUJGwINcJ4RMXbNVfs1: true
        },
        startedBy: "lfNFlKnsbuUJGwINcJ4RMXbNVfs1"
    }
}    
要获得所有游戏,我执行以下操作:

const gamesCollection = db.collection('games')
firebase.gamesCollection.where('finished', '==', false).orderBy('createdOn', 'desc').onSnapshot(querySnapshot => {
    querySnapshot.forEach(doc => {
        const games = doc.data()
    })
})
这很好:我得到了所有尚未完成的游戏。。。但现在我想像这样“询问”他们:

  • 获取所有涉及玩家
    lfNFlKnsbuUJGwINcJ4RMXbNVfs1
    的游戏
  • 获取玩家
    lfNFlKnsbuUJGwINcJ4RMXbNVfs1
    或玩家
    nj2u5mwvaiw6twkhmv2
    参与的所有游戏

  • 似乎无法理解这是如何完成的…

    因为您将玩家存储在地图中,对于第一种情况,您可以查询与
    玩家ID
    对应的
    玩家对象属性,如下所示:

      const playerIdToCheck = 'AQSDNJ2U5MwVAIwWkHMv2'
      const gamesCollection = db.collection('games')
    
      gamesCollection
        .where('players.' + playerIdToCheck, '==', true)
        .onSnapshot(querySnapshot => {
          querySnapshot.forEach(doc => {
            const games = doc.data()
            console.log(doc.id, ' => ', games);
          });
        });`
    

    对于第二种情况(“OR”查询),实际上不可能在Firestore中执行OR查询:因此,您必须执行两个查询(即一个用于LFNFLKNSBUJGWincJ4RMXBNVFS1,另一个用于NJ2 U5MWVAIWW6TWKHMV2),并将它们合并到前端

    您可以在此处或此处了解更多关于或查询以及可能的工作