- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 graphql 和 mongodb (mongoose) 构建一个快速 JS 应用程序。我正在使用 facebooks Dataloader 来批处理和缓存请求。
除了这个用例,它工作得很好。
我有一个充满用户帖子的数据库。每个帖子都包含用户 ID 以供引用。当我打电话返回数据库中的所有帖子时。帖子返回正常,但如果我尝试在每个帖子中吸引用户。有多个帖子的用户将只返回一个用户,因为第二个用户的 key 已缓存。所以来自用户“x”的 2 个帖子(键)将只返回 1 个用户对象“x”。
然而,Dataloader 必须返回与其收到的 key 相同数量的 promise 。
它有一个选项可以将缓存指定为 false,这样每个键都会发出请求。但这似乎不适用于我的用例。
抱歉,如果我没有很好地解释这一点。
这是我的 graphql 请求
query {
getAllPosts {
_id // This is returned fine
user {
_id
}
}
}
返回错误:
DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys.
最佳答案
您是否正在尝试批量发布 key [1, 2, 3]
并期望获得用户结果 [{ user1 }, {user2}, { user1 }]
?
或者您是否正在尝试批处理用户 key [1, 2]
并期望获得发布结果 [{ post1}, {post3}] 和 [{ post2 }]
?
似乎只有在第二种情况下,您才会遇到键的长度与结果数组的长度不同的情况。
要解决第二个问题,您可以在 sql 中执行类似的操作:
const loader = new Dataloader(userIDs => {
const promises = userIDs.map(id => {
return db('user_posts')
.where('user_id', id);
});
return Promise.all(promises);
})
loader.load(1)
loader.load(2)
因此您返回 [[{ post1}, {post3}], [{ post2 }]]
数据加载器可以解包。
如果你这样做了:
const loader = new Dataloader(userIDs => {
return db('user_posts')
.where('user_id', [userIDs]);
})
loader.load(1)
loader.load(2)
您将得到 [{ post1}, {post3}, { post2 }]
并因此出现错误:该函数没有返回与以下长度相同的数组的 Promise键数组
不确定以上内容是否相关/有帮助。如果您可以提供批量加载功能的片段,我可以修改
关于mongodb - Dataloader 没有返回相同长度的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568113/
我目前遇到以下情况,我想使用 DataLoader 批处理 numpy 数组: import numpy as np import torch import torch.utils.data as d
我现在正在使用 Pytorch 运行 Python 程序。我使用我自己的数据集,而不是 torch.data.dataset .我从从特征提取中提取的泡菜文件下载数据。但是出现以下错误: Traceb
问题 我有以下问题: 我想使用 pytorchs DataLoader(以类似于 here 的方式)但我的设置有点不同: 在我的数据文件夹中,我有不同街道情况的图像(让我们称它们为 image_tot
我已经通过这个 pytorch api 通过设置 download=True 下载了 ImageNet 数据集。但我无法遍历数据加载器。 错误说“'DataLoader' 对象不支持索引” train
我了解 dataLoader 如何使用简单的键工作: import DataLoader from 'dataloader'; import myService from './services/se
当遍历 PyTorch 数据加载器时,例如 # define dataset, dataloader train_data = datasets.ImageFolder(data_dir + '/tr
当遍历 PyTorch 数据加载器时,例如 # define dataset, dataloader train_data = datasets.ImageFolder(data_dir + '/tr
我正在使用 graphql 和 mongodb (mongoose) 构建一个快速 JS 应用程序。我正在使用 facebooks Dataloader 来批处理和缓存请求。 除了这个用例,它工作得很
查看 DataLoader library ,它是如何缓存和批处理请求的? 指令以下列方式指定用法: var DataLoader = require('dataloader') var userLo
shuffle = False时,不打乱数据顺序 shuffle = True,随机打乱 ?
关于Pytorch中怎么自定义Dataset数据集类、怎样使用DataLoader迭代加载数据,这篇官方文档已经说得很清楚了,这里就不在赘述。 现在的问题:有的时候,特别对于NLP任务来说,输入的
最近在学pytorch,在使用数据分批训练时在导入数据是使用了 DataLoader 在参数 num_workers的设置上使程序出现运行没有任何响应的结果 ,看看代码
有一个bug在 PyTorch/Numpy 中,当使用 DataLoader 并行加载批处理时(即设置 num_workers > 1),每个 worker 使用相同的 NumPy 随机种子,导致任何
我有以下错误。 Expected: /home/ubuntu/.pycharm_helpers/pydev/pydevd_attach_to_process/attach_linux_amd64.so
有一个bug在 PyTorch/Numpy 中,当与 DataLoader 并行加载批次时(即设置 num_workers > 1 ),每个 worker 使用相同的 NumPy 随机种子,导致应用的
我有一个 GraphQL api,使用传统的解析函数可以很好地工作。我的目标是消除 N+1 问题。 为此,我决定使用 Dataloader。我已经完成了这些步骤,据说可以让应用程序运行: 我将这两个函
当我创建一个 PyTorch DataLoader 并开始迭代时——我得到了一个非常慢的第一个纪元(x10--x30 比所有下一个纪元都慢)。此外,此问题仅出现在来自 Kaggle 的 Google
我有非常常见的 GraphQL 架构,如下所示(伪代码): Post { commentsPage(skip: Int, limit: Int) { total: Int item
有没有办法将DataLoader作为列表处理?我的想法是,我想对隐式图像对进行洗牌,而不将洗牌设置为 True 基本上,我有 10 个场景,每个场景包含 100 个序列,因此它们在目录中表示为 '1_
我需要用我训练的卷积神经网络的数据测试结果编写一个文件。数据包括语音数据采集。文件格式需要是“文件名,预测”,但我很难提取文件名。我这样加载数据: import torchvision from to
我是一名优秀的程序员,十分优秀!