在表达数据过滤器时,通过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如何处理此问题或其他人如何做到这一点的反馈。
答案 0 :(得分:1)
您应该在teams
字段上添加过滤器作为参数,因为这是一种更具伸缩性的方法。引入新过滤器意味着只需要添加一个参数。而多场方法需要为每种可能的组合指数个字段。
如果您希望在同一组件中获取团队的多个查询,请不要忘记您也可以在客户端上为别名设置别名:
query on Viewer {
activeTeams: teams(active: true) { ... }
inactiveTeams: teams(active: false) { ... }
}