0

我想知道对属于同一模型的数据进行两次单独提取的最佳做法是什么。一个用于获取所有用户数据,另一个用于请求其特征并将其添加到每个用户。

我想我可以在用户中创建一个引用来填充数据,但我不确定如何创建自定义引用,因为它应该是一个数组。

export const User = types
  .model('User', {
    id: types.identifierNumber,
    ...
    traits: types.maybeNull(TraitsbyUserReference),
  })

const TraitsbyUserReference = types.maybe(
  types.reference(Trait, {
    get(identifier: string, parent):  {
      return (parent as Instance<typeof TraitsStore>).getAllTraits()
    },
    set(value) {
      return value; // this is what doesnt work out because i'm fetching a whole array
    },
  }),
)

另外,这是一个好的做法还是有其他更好的方法来获得这个结果?谢谢!

4

1 回答 1

0

在定义模型方面,您可以尝试在模型中切换maybeNull到具有默认值的可选数组 -

...
traits: types.optional(types.array(Trait), []),
...

因此,模型将始终使用空的特征集合进行实例化。

就 而言TraitsbyUserReference,我没有遵循动态存储查找所需的抽象。您可以创建一个操作(例如User.actions(self => ...))将特征查找为单独的 api -

getUserTraits(){
   /* this will vary based on your implementation of TraitsStore and how it is injected */
    const traits = self.TraitsStore.getAllTraits(self.id); 
    self.traits = traits;
}
于 2019-10-07T15:03:14.530 回答