GraphQL Dataloader-带有load()函数的全局变量

GraphQL Dataloader-带有load()函数的全局变量,graphql,Graphql,我将graphql与dataloader一起使用。我有一个类型内的调用。我的问题是,当我调用“categoryPhotoLoader”时,我想将user_id作为每个_id的全局参数传递。这是可能的,还是我必须创建一个concat(${u id}{u${user_id})并将密钥的第一个用户id放入数据加载器?(拆分字符串并获取第一个id的用户\u id部分) 我想要那样的 async photoS3({_id, user_id}, _, {categoryPhotoLoader}) {

我将graphql与dataloader一起使用。我有一个类型内的调用。我的问题是,当我调用“categoryPhotoLoader”时,我想将user_id作为每个_id的全局参数传递。这是可能的,还是我必须创建一个concat(
${u id}{u${user_id}
)并将密钥的第一个用户id放入数据加载器?(拆分字符串并获取第一个id的用户\u id部分)

我想要那样的

async photoS3({_id, user_id}, _, {categoryPhotoLoader}) {
    return categoryPhotoLoader.load(_id, {user_id: user_id});
}

Dataloader键不必是字符串,它们可以是数组、对象或其他数据类型。因此,您可以:

categoryPhotoLoader.load({ _id, user_id })
这个对象将被传递给批处理函数。如果您这样做,您将希望向加载程序的构造函数提供一个
cacheKeyFn
,以便dataloader可以判断两个键何时相等。在这种情况下,可以很简单地执行以下操作:

新数据加载器(batchLoadFn{ cacheKeyFn:({u-id,user-id})=>
${u-id}${user-id}
,, })


请小心使用JSON.stringify,因为您希望确保字符串中属性的顺序正确。

数据加载器键不必是字符串,它们可以是数组、对象或其他数据类型。因此,您可以:

categoryPhotoLoader.load({ _id, user_id })
这个对象将被传递给批处理函数。如果您这样做,您将希望向加载程序的构造函数提供一个
cacheKeyFn
,以便dataloader可以判断两个键何时相等。在这种情况下,可以很简单地执行以下操作:

新数据加载器(batchLoadFn{ cacheKeyFn:({u-id,user-id})=>
${u-id}${user-id}
,, })


小心使用
JSON.stringify
,因为您希望确保字符串中属性的顺序正确。

您只是在问如何使用多个值作为键吗?不清楚“全局参数”是什么,或者全局变量与您描述的用例有什么关系。我想我需要特定用户的所有ID。我可以通过身份证。。。。但是我还想传递用户id。您只是问如何使用多个值作为键吗?不清楚“全局参数”是什么,或者全局变量与您描述的用例有什么关系。我想我需要特定用户的所有ID。我可以通过身份证。。。。但我还想传递用户id。