使用dataloader
dataloader简单的说就是实现了接口([input1, input2...]) => ([output1, output2...]),输入几个值就会输出几条数据,对于我们使用者知道这个就差不多了。当然,他的功能实现远不止这些,详情请查看项目。
使用数据库 query builder⌗
我们使用knex。
初始化和填充假数据
此时就可以这样查询数据:
定义 dataloader⌗
dataloader 相当于 model,只不过功能非常单一。
比如,定义一个select user by id:
使用user.load(id)可以得到相应的 id 的数据,相当于promise类型, user.loadMany([1, 2, 3])可以得到 id 为 1, 2, 3 的三条记录,相当于Promise.all([user.load(1), user.load(2), user.load(3)]), 官方文档也有说明这点。
问题⌗
查询单挑记录没有任何问题,但是看到查询多条数据用的是Promise.all(),因此查询是并行的,所以结果顺序会混乱,与我们期望的不相符。所以我们需要写一个 helper 函数。
改造 dataloader
此时结果会达到预期。
完整代码请查看:http://gost.surge.sh/#/gost/ec67d348-1d3b-47c5-8bbc-afb0edf3e324
Read other posts