Firestore for Rust 使用教程

随笔3个月前发布 池向利
38 0 0

Firestore for Rust 使用教程

firestore-rsGoogle Firestore for Rust based on gRPC API with Serde serializer项目地址:https://gitcode.com/gh_mirrors/fi/firestore-rs

项目介绍

firestore-rs 是一个用于 Rust 语言的 Google Firestore 库,基于 gRPC API 并结合 Serde 序列化器。该库提供了简单易用的 API,支持使用 Rust 结构体创建或更新文档,以及对 Firestore 文档的查询、流式处理、列表、监听更改和聚合查询等功能。此外,它还提供了基于 Tokio 运行时的完全异步支持,并实现了自定义的 Serde 序列化器以支持 Firestore gRPC 值。

项目快速启动

安装依赖

首先,在 Cargo.toml 文件中添加以下依赖:




[dependencies]


firestore = { git = "https://github.com/abdolence/firestore-rs.git" }


tokio = { version = "1", features = ["full"] }


serde = { version = "1", features = ["derive"] }

初始化 Firestore 客户端

创建一个 Rust 文件(例如 main.rs),并添加以下代码以初始化 Firestore 客户端:




use firestore::*;


use serde::{Deserialize, Serialize};


 


#[derive(Serialize, Deserialize, Debug)]


struct MyTestStructure {


    name: String,


    count: i64,


}


 


#[tokio::main]


async fn main() {


    let db = FirestoreDb::new("your-project-id").await.unwrap();


 


    let my_struct = MyTestStructure {


        name: "Test".to_string(),


        count: 42,


    };


 


    let _ = db.fluent()


        .insert()


        .into("my_collection")


        .document_id("my_document_id")


        .object(&my_struct)


        .execute()


        .await;


 


    println!("Document inserted successfully!");


}

运行代码

使用以下命令运行代码:

cargo run

应用案例和最佳实践

查询文档

以下是一个查询 Firestore 文档的示例:




let query = db.fluent()


    .select()


    .from("my_collection")


    .query()


    .await


    .unwrap();


 


for document in query.documents {


    let my_struct: MyTestStructure = document.decode().unwrap();


    println!("{:?}", my_struct);


}

监听更改

以下是一个监听 Firestore 文档更改的示例:




let listener = db.listen()


    .for_all_changes()


    .in_collection("my_collection")


    .start()


    .await


    .unwrap();


 


while let Some(change) = listener.next().await {


    match change {


        FirestoreChange::DocumentChange(doc_change) => {


            let my_struct: MyTestStructure = doc_change.decode().unwrap();


            println!("{:?}", my_struct);


        }


        _ => {}


    }


}

典型生态项目

Tokio

firestore-rs 使用 Tokio 作为异步运行时,提供了高性能的异步 I/O 操作支持。

Serde

Serde 是一个用于序列化和反序列化 Rust 数据结构的框架,firestore-rs 利用 Serde 实现了对 Firestore 文档的序列化和反序列化。

gRPC

firestore-rs 基于 gRPC API 与 Google Firestore 进行通信,提供了高效的远程过程调用机制。

通过以上内容,您可以快速上手并深入了解 firestore-rs 的使用方法和最佳实践。希望本教程对您有所帮助!

firestore-rsGoogle Firestore for Rust based on gRPC API with Serde serializer项目地址:https://gitcode.com/gh_mirrors/fi/firestore-rs

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...