0

我在 vuex 商店中有一个 firebase 文档列表,并且该列表会动态更新。我想用 vuexfire 动态绑定该列表中的文档。

state: {
   docsToBind: [], // dynamic: this gets updated so I cannot hardcode a few bindings
   documents: {} // bind documents here?
},
actions:{
   bindOne: firestoreAction(({ state, bindFirestoreRef }) => {
      return bindFirestoreRef(...)
      }),
   bindAll({state}){
   for(const doc of state.docsToBind){
       // bind the document to a dictionary item?
   },
   unbindTeam({state}){
      // whenever a doc is removed from the listunbind it
   }   
}

这是正确的方法吗?

注意:我无法绑定整个集合,因为客户端无权访问所有文档。所以我需要将子集绑定在docsToBind

4

1 回答 1

2

使用 Vuexfire,当你绑定时,你应该只提供绑定状态的键和源(集合、查询或文档)。

因此,如果您想绑定到集合的子集,则需要绑定到 a Query,因此您需要知道 Query 定义(即子集的定义)。

如果您想在“一个动作”中绑定一组文档(其定义是动态的,例如通过变量 id 列表标识的一组文档),您可能需要使用另一种方法。

您可以定义一个查询,例如,通过在文档中有一个带有 ID 的字段并使用运算符将​​同一字段上的in最多 10 个相等 ( ) 子句与逻辑.==OR

或者您将需要创建自己的自制绑定,例如Promise.all()在 Vuex 操作中使用。

于 2020-09-01T13:48:15.107 回答