#data-loader #load #async-await #pattern #queries #avoiding #batch

async_dataloader

基于 DataLoader 模式,使用 async/await 避免使用 N+1 查询的强大工具

4 个版本

0.1.3 2021 年 3 月 22 日
0.1.2 2021 年 3 月 22 日
0.1.1 2021 年 3 月 22 日
0.1.0 2021 年 3 月 22 日

#1880 in 异步

MIT 许可证

20KB
367 代码行

async_dataloader

基于 DataLoader 模式,使用 async/await 避免使用 N+1 查询的强大工具。

data_loader 将单个 "poll" 期间发生的加载批量处理 - 无需人工延迟。

设计灵感来自 https://github.com/exAspArk/batch-loaderhttps://github.com/graphql/dataloader


lib.rs:

基于 DataLoader 模式,使用 async/await 避免使用 N+1 查询的强大工具。

data_loader 将单个 "poll" 期间发生的加载批量处理,无需人工延迟。

设计灵感来自 https://github.com/exAspArk/batch-loaderhttps://github.com/graphql/dataloader

用法

use async_dataloader::{def_batch_loader, batched};

def_batch_loader! {
    pub async fn loader(inputs: u64) -> String {
        inputs.map(|input| {
             input.to_string()
        })
    }
}

batched(async {
    assert_eq!(*loader(1).await, "1".to_owned());
}).await

依赖关系

~1MB
~16K SLoC