[][src]Function firestore_db_and_auth::documents::write

pub fn write<T>(
    auth: &impl FirebaseAuthBearer,
    path: &str,
    document_id: Option<impl AsRef<str>>,
    document: &T,
    options: WriteOptions
) -> Result<WriteResult> where
    T: Serialize

Write a document to a given collection.

If no document_id is given, Firestore will generate an ID. Check the WriteResult return value.

If a document_id is given, the document will be created if it does not yet exist. Except if the "merge" option (see WriteOptions::merge) is set.

Example:

use firestore_db_and_auth::{Credentials, ServiceSession, documents, errors::Result, FirebaseAuthBearer};
use serde::{Serialize,Deserialize};

 #[derive(Serialize, Deserialize)]
 struct DemoDTO {
    a_string: String,
    an_int: u32,
    another_int: u32,
 }
 #[derive(Serialize, Deserialize)]
 struct DemoPartialDTO {
    #[serde(skip_serializing_if = "Option::is_none")]
    a_string: Option<String>,
    an_int: u32,
 }

 fn write<'a>(session: &'a impl FirebaseAuthBearer<'a>) -> Result<()> {
    let obj = DemoDTO { a_string: "abcd".to_owned(), an_int: 14, another_int: 10 };
    let result = documents::write(session, "tests", Some("service_test"), &obj, documents::WriteOptions::default())?;
    println!("id: {}, created: {}, updated: {}", result.document_id, result.create_time.unwrap(), result.update_time.unwrap());
    Ok(())
 }
 /// Only write some fields and do not overwrite the entire document.
 /// Either via Option<> or by not having the fields in the structure, see DemoPartialDTO.
 fn write_partial<'a>(session: &'a impl FirebaseAuthBearer<'a>) -> Result<()> {
    let obj = DemoPartialDTO { a_string: None, an_int: 16 };
    let result = documents::write(session, "tests", Some("service_test"), &obj, documents::WriteOptions{merge:true})?;
    println!("id: {}, created: {}, updated: {}", result.document_id, result.create_time.unwrap(), result.update_time.unwrap());
    Ok(())
 }

Arguments

  • 'auth' The authentication token
  • 'path' The document path / collection; For example "my_collection" or "a/nested/collection"
  • 'document_id' The document id. Make sure that you do not include the document id in the path argument.
  • 'document' The document
  • 'options' Write options