当父级包含ID数组时,如何使用数据加载器



我正在尝试在我的项目中实现数据加载器-

这是我的代码-

subCategory: async (parent, _, {loaders}) => {
console.log(parent);
// I try it but getting errors
const subcategory = await loaders.subCategory.load(parent.subCategory.toString());
return subcategory;
}

上述代码的控制台结果-

{
_id: new ObjectId("61a658932c7ad474fde70893"),
name: "Men's",
createdAt: 2021-11-30T17:00:03.225Z,
updatedAt: 2021-12-05T13:52:26.848Z,
__v: 2,
subCategory: [ // Array of IDS
new ObjectId("61acc3f8a49c6cf3b04cf225"),
new ObjectId("61acc41aa49c6cf3b04cf22b")
]
}
{
_id: new ObjectId("61a65980890ef431bc0ecbcf"),
name: 'Women',
createdAt: 2021-11-30T17:04:00.530Z,
updatedAt: 2021-12-05T13:54:00.449Z,
__v: 3,
subCategory: [ // Array of IDS
new ObjectId("61acc460dba0e6083be97fb5"),
new ObjectId("61acc471dba0e6083be97fbd"),
new ObjectId("61acc478dba0e6083be97fc3")
]
}

我试着用这个功能——

module.exports.batchSubCategory = async (categoryIds) => {
const subcategory = await Subcategory.find({_id: {$in: Ids}});
return Ids.map(categoryId => subcategory.find(category => category.id === categoryId));
}

以下是上下文

context: async ({req}) => {
return {
loaders: {
subCategory: new Dataloader(keys => loaders.categoryLoaders.batchSubCategory(keys))
}
}
},

我正在使用apollo服务器。

我也遇到过这种类型的问题。解决方案是使用.loadMany((方法。您也可以参考此URLhttps://medium.com/the-marcy-lab-school/how-to-use-dataloader-js-9727c527efd0.

只需尝试而不是.load((方法:

const subcategory = await loaders.subCategory.load(parent.subCategory.toString());

使用.loadMany((方法:

const subcategory = await loaders.subCategory.loadMany(parent.subCategory);

最新更新