仅使用SQL对数据加载器API进行后



使用knex使用dataloader的示例之一显示了以下内容:

  user: new DataLoader(ids => db.table('users')
    .whereIn('id', ids).select()
    .then(rows => ids.map(id => rows.find(x => x.id === id)))),

映射是使键数组中的键总是与结果数组中的对象相匹配,例如如果缺少具有ID 2的对象:

array of keys: [1,2,3]
array of results: [object1, undefined, object3]

如果将地图排除在外,您将获得一个不平衡的输入/输出(例如,查询缺失ID时(:

array of keys: [1,2,3]
array of results [object1, object3]

有什么方法可以用纯SQL?

进行map

这意味着数据库没有具有ID 2的行,因此whereIn不会返回更多的2行。用whereIn在纯SQL中无法做到这一点。有了多个子征服,它可以完成,但这将是不好的解决方案。

相关内容

  • 没有找到相关文章

最新更新