#mongo-db #actix #database-client #async

shared_mongodb

在进程内共享 MongoDB 客户端的便捷函数

8 个版本

0.1.7 2023年7月2日
0.1.6 2023年2月2日
0.1.5 2022年5月26日

#1756 in 网页编程

每月 34 次下载
3 个 Crates 中使用 (通过 debot-db)

Apache-2.0 协议

7KB
71

shared_mongodb

本 crate 是在进程内共享 MongoDB 客户端的便捷助手,例如,在异步请求处理器之间共享。


lib.rs:

本 crate 是在进程内共享 MongoDB 客户端的便捷助手,例如,在异步请求处理器之间共享。

示例

use actix_web::{web, App, HttpServer};
use std::sync::{Arc, Mutex};
use shared_mongodb::{ClientHolder, database};
use mongodb::options::ClientOptions;

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    let client_options = ClientOptions::parse("mongodb://root:password@localhost:12345").await;
    let client_holder = web::Data::new(Mutex::new(ClientHolder::new(client_options.unwrap())));
    HttpServer::new(move || {
        let app = App::new().app_data(client_holder.clone());
        return app;
    });

    Ok(())
}

async fn handler(data: web::Data<Mutex<ClientHolder>>) -> std::io::Result<()> {
    let db = database::get(&data, "My_Company");
    database::disconnect(&data);

    let session = start_transaction(&data)?;
    commit_transaction(&mut session);

    Ok(())
}

依赖项

~28–42MB
~783K SLoC