我使用graphql编写了一个非常简单的模式,但是边缘中的所有ID都是相同的.
{ "data": { "imageList": { "id": "SW1hZ2VMaXN0Og==", "images": { "edges": [ { "node": { "id": "SW1hZ2U6", "url": "1.jpg" } }, { "node": { "id": "SW1hZ2U6", "url": "2.jpg" } }, { "node": { "id": "SW1hZ2U6", "url": "3.jpg" } } ] } } } }
我在github上发布了具体细节,这里是链接.
因此,globalIdField希望您的对象具有名为"id"的字段.然后它将您传递给globalIdField的字符串添加一个':'和您的对象的id来创建其全局唯一ID.
如果你的对象没有一个名为'id'的字段,那么它就不会附加它,你的所有globalIdField都只是你传入的字符串和':'.所以他们不会是独一无二的,他们都会是一样的.
您可以传递给globalIdField的第二个参数,该参数是获取对象并返回要使用的globalIdField的id的函数.所以假设你的对象的id字段实际上被称为'_id'(感谢Mongo!).您可以这样调用globalIdField:
id: globalIdField('Image', image => image._id)
你去吧 继电器的唯一ID享受.
以下是graphql-relay-js中相关源代码的链接:https://github.com/graphql/graphql-relay-js/blob/master/src/node/node.js#L110