特定过滤器应表示为显式命名字段,还是带有过滤器参数的通用字段?

时间:2016-01-25 02:46:50

标签: graphql

在表达数据过滤器时,通过GraphQL,我们应该为该过滤器创建明确命名的字段,还是应该将参数添加到应用过滤器的更通用的列表类型字段?

例如,如果我有一个名为bindEvents: function () { var me = this; document.addEventListener('deviceready', function () { me.onDeviceReady(); }, false); $(document).ready(function () { me.onDocumentReady(); }); }, documentReady: false, onDocumentReady: function () { this.documentReady = true; this.checkReady(); }, deviceReady: false, onDeviceReady: function () { this.deviceReady = true; this.checkReady(); }, checkReady: function (id) { if (this.documentReady && this.deviceReady) this.load(); }, load: function () { // do stuff } 的字段,但我想提供过滤teams提供的数据的功能,直到只有活跃的团队(相对于非活动状态) ),我应该通过GraphQL将该过滤器作为teams字段的参数公开,还是应该创建一个名为teams的新字段?

我认为明确的,明确命名的字段可能会更好地扩展并且从长远来看不那么混乱,因为没有关于params如何在彼此配对时起作用的问题等。

我希望获得有关Facebook如何处理此问题或其他人如何做到这一点的反馈。

1 个答案:

答案 0 :(得分:1)

您应该在teams字段上添加过滤器作为参数,因为这是一种更具伸缩性的方法。引入新过滤器意味着只需要添加一个参数。而多场方法需要为每种可能的组合指数个字段。

如果您希望在同一组件中获取团队的多个查询,请不要忘记您也可以在客户端上为别名设置别名:

query on Viewer {
  activeTeams: teams(active: true) { ... }
  inactiveTeams: teams(active: false) { ... }
}