Javascript 是否可以为数组创建onSnapshot侦听器

Javascript 是否可以为数组创建onSnapshot侦听器,javascript,vue.js,google-cloud-firestore,Javascript,Vue.js,Google Cloud Firestore,我有用户…每个用户都有多个他/她所属的组。每个用户组成员资格都是嵌入在其用户文档中的数组。有一个tasks集合,每个task包含一个与用户组相对应的AuthorizedGroup数组。大多数任务只有一个authorizedGroup,但有些任务有几个组。任务由一个用户分配给另一个用户 我想查询用户可用的所有任务,并为每个查询设置侦听器 使用get()是成功的,但没有提供我所希望的活动侦听器。是否有为每个组生成侦听器的方法?onSnapshot方法不返回承诺。不清楚我如何才能实现这个目标。如有任何

我有用户…每个用户都有多个他/她所属的组。每个用户组成员资格都是嵌入在其用户文档中的数组。有一个tasks集合,每个task包含一个与用户组相对应的AuthorizedGroup数组。大多数任务只有一个authorizedGroup,但有些任务有几个组。任务由一个用户分配给另一个用户

我想查询用户可用的所有任务,并为每个查询设置侦听器

使用get()是成功的,但没有提供我所希望的活动侦听器。是否有为每个组生成侦听器的方法?onSnapshot方法不返回承诺。不清楚我如何才能实现这个目标。如有任何建议,将不胜感激

created() {
  const getTasksPerGroup = async (groups) => {
  // Make a get request using each group in users group membership list
     const queries = groups.map((group) => {
        return this.$store.state.db
             .collection('tasks')
             .where('authorizedGroups', 'array-contains', group)
             .where('taskAssignedTo', '==', this.$store.state.auth.user.displayName)
             .get()
      })

  // Use Await Promise.all to acquire an array of querySnapshots
  const result = await Promise.all(queries).then((querySnapshot) => {
     return querySnapshot.map((querySnapshot) => querySnapshot.docs).reduce((acc, docs) => [...acc, ...docs])})

  //Result is an array of querySnapshots...pushing each qs.data() to the tasks array
      let tasks = []
      result.forEach((qs) => {
         let item = qs.data()
         tasks.push(item)
         console.log('tasks:', tasks)
         this.$store.commit('tasks/mutate_tasksArray', tasks)
       })
 }
  // Invoke async function that gets the user's groups array
        getTasksPerGroup(this.allFirmGroups)
}

您可以使用
get()
,它返回一个承诺并提供一组结果,也可以使用
onSnapshot()
附加一个不返回承诺的持久侦听器,因为只有您可以控制侦听器何时停止

如果您希望侦听多个查询的结果,则必须为每个查询添加一个侦听器,并且在侦听完成后,在没有Firestore SDK返回的任何承诺的帮助下,从每个查询中取消订阅侦听器。由您决定添加和删除侦听器的时间