使用Firestore在Vuex有效负载中的未定义数组,其中“ in”查询

时间:2020-06-22 14:53:03

标签: firebase vue.js google-cloud-firestore vuex vuexfire

我正在尝试像这样进行“输入”查询:db.collection('units')。where('SuperID','in',有效负载)

SuperID:是一个数字

有效载荷:是与SuperID匹配的数字数组

我正在这样做,因此我可以根据这样的文档对用户进行分组

enter image description here

Vuex商店

getgs: firestoreAction(({ bindFirestoreRef, payload }) => {
      //return the promise returned by 'bindFirestoreRef'
      return bindFirestoreRef('gs', db.collection('units').where('SuperID', 'in', payload))
    }), 

方法

methods: {
    ...mapActions(['getgs']),

  ggs(payload){

      console.log(payload)

      this.getgs(payload)
  }
}

It console logs payload but then says its undefined

每当我尝试调用它时,它都会记录所需的数组,但随后会说该数组未定义并引发Firebase错误。

1 个答案:

答案 0 :(得分:1)

好的,我想我这次找到了答案。

使用docs中的示例:

actions: {
  checkout ({ commit, state }, products) {
    // save the items currently in the cart
    const savedCartItems = [...state.cart.added]
    // send out checkout request, and optimistically
    // clear the cart
    commit(types.CHECKOUT_REQUEST)
    // the shop API accepts a success callback and a failure callback
    shop.buyProducts(
      products,
      // handle success
      () => commit(types.CHECKOUT_SUCCESS),
      // handle failure
      () => commit(types.CHECKOUT_FAILURE, savedCartItems)
    )
  }
}

看起来您的动作定义应该是

getgs: firestoreAction(({ bindFirestoreRef }, payload) => {
      //return the promise returned by 'bindFirestoreRef'
      return bindFirestoreRef('gs', db.collection('units').where('SuperID', 'in', payload))
    }), 

有效负载位于上下文对象之外。