[RAILS] Comment obtenir et ajouter des données depuis Firebase Firestore dans Ruby

Obtenez et ajoutez des données de Firestore dans Ruby

Cette fois, je vais résumer le code qui émet une requête lors de la récupération des données de Firestore dans Ruby et le code qui ajoute des données.

Qu'est-ce que Firestore

Aucune base de données cloud SQL fournie par Firebase.

le terme

Pour le moment, je pense que ce n'est pas grave si vous connaissez les trois termes suivants dans Firestore.

Modèle de données Cloud Firestore

collection

Un cadre général pour stocker des données (documents). Lorsque vous cliquez sur Cloud Firestore dans la barre latérale de la console Firebase, la collection se trouve à l'extrême gauche de l'écran. Les données (documents) qui y sont liées sont stockées dans une seule collection.

document

Données stockées dans la collection. Les données sont gérées par un ID de document unique et un champ est associé à cet ID de document.

champ

Données associées à un document. Il est possible de lier plusieurs éléments à un document.

La structure imbriquée ci-dessus est le modèle de données Firestore. Ainsi, "obtenir les valeurs de la collection vers le document et dans les champs" est l'acte d'obtenir les données Firestore. J'ai l'impression qu'il faut faire pas mal de pas.

Les méthodes décrites ci-dessous doivent pouvoir utiliser les méthodes Firestore.

Faire fonctionner Firebase avec des rails

Au lieu d'utiliser ActiveRecord, qui est l'ORM de mysql, il est lié à l'aide d'un gem pour accéder aux données dans le fiestore.

Rendre les feux disponibles

Il y a un bijou qui vous permet d'utiliser le firestore

gem 'google-cloud-firestore'

Est utilisé.

Créer un objet Firestore

Paramètres Firestore

À propos de class_attribute

firebase.rb


class Firesbase
  require 'google/cloud'

  class_attribute :connecting
  self.connecting = Google::Cloud.new(Nom du projet créé dans la console).firestore
end

Spécifiez une collection

Tout d'abord, déterminez à partir de quelle collection vous souhaitez obtenir les données. Si vous utilisez la méthode de collecte et spécifiez le nom de la collection créée sur la console Firebase comme argument, vous pouvez utiliser la méthode pour récupérer les données de cette collection.

collection.rb


  hogehfuges_colleciton = connecting.collection 'hogefugas'

Obtenez des données

Il semble que les trois suivants soient utilisés comme principal dans la méthode d'acquisition.

document

get_by_document.rb


  hoge = hoge_collection.document(ID de document).get      #Google::Cloud::Firestore::DocumentSnapshot
  fuge = fuge_collection.document(ID de document).get.data # Hash

En prenant l'ID de document comme argument, le document obtient les données associées à cet ID de document. Si vous utilisez la méthode get, vous pouvez l'obtenir avec un objet appelé Google :: Cloud :: Firestore :: DocumentSnapshot, mais comme vous ne pouvez pas gérer les données du champ à l'intérieur telles quelles, utilisez la méthode data. Si vous utilisez la méthode de données, il effectuera un hachage avec le champ associé au document acquis comme clé, et vous pourrez facilement accéder aux données par l'opération de hachage comme indiqué ci-dessous.

data.rb


  fuge[:fugefuge_name]

where où obtient celui qui remplit les conditions. Dans le cas où, si vous utilisez la méthode get, le type de l'objet sera Enumerator, vous devez donc utiliser le traitement en boucle ou une méthode qui inclut le traitement en boucle dans la bibliothèque standard de Ruby (par exemple, map). Vous pouvez utiliser la méthode de données sur les données récupérées dans une boucle, afin de pouvoir accéder aux données.

get_by_where.rb


  snap = hogefugas_collection.where(conditions).get #Enumerator
  snap.map do |hoge|
    {
      "hoge_name" => hoge.data[:hoge_name],
      "update_at" => hoge.data[:update_at]
    }
  end

order order spécifie un champ comme argument et obtient le document dans lequel le champ existe. Si la commande passe également par la méthode get, le type d'objet sera Enumrator, donc bouclez-le avant d'accéder aux données. Le code ci-dessous utilise la méthode document_id au lieu de la méthode data. Cela vous permet d'obtenir l'ID de document du document, pas le champ.

get_by_oder.rb


  hoges = hogefugas_collection.order('updatedAt').get.map { |hoge| hoge.document_id }

Ajouter des données

Utilisez la méthode définie. Créez des données à l'aide du champ que vous souhaitez enregistrer en tant que clé de hachage. Si vous l'utilisez comme argument de la méthode set, l'ID de document sera automatiquement généré dans la collection spécifiée et enregistré dans le Firestore.

set.rb


def save(id, hoge)
    huge = {
      id: id,
      hogehoge: hoge,
      update_at: DateTime.now.strftime("%Y-%m-%d-%H:%M")
    }
    collection.doc.set(huge)
  end

Mettre à jour les données

Utilisez la méthode de mise à jour. Vous pouvez mettre à jour les données en spécifiant l'ID de document dans la collection que vous souhaitez mettre à jour et en utilisant ce champ comme argument de la méthode de mise à jour.

update.rb


  def edit(id, hoge)
    document_id = collection.where("id", "=", id).get.first.document_id
    collection.document(document_id).update(
      hogehoge: hoge,
      update_at: DateTime.now.strftime("%Y-%m-%d-%H:%M")
    )
  end

Recommended Posts

Comment obtenir et ajouter des données depuis Firebase Firestore dans Ruby
Comment écraser les données Firebase avec Swift
Comment obtenir une classe depuis Element en Java
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
[IOS 14] Comment obtenir des données d'image de type Data directement à partir de PHPickerViewController?
Comment itérer indéfiniment en Ruby
Comment obtenir des paramètres dans Spark
Comment installer Bootstrap dans Ruby
Comment supprimer de grandes quantités de données dans Rails et problèmes
[Java] Comment convertir du type String en type Path et obtenir le chemin
[Java] Comment ajouter des données à la liste (add, addAll)
Comment ajouter un fichier jar dans ScalaIDE
Comment obtenir la date avec Java
[Facile] Comment mettre à niveau Ruby et le bundler
Comment modifier le nombre maximum et maximum de données POST dans Spark
Essayez d'obtenir des données de la base de données en utilisant MyBatis dans le projet Micronaut + Kotlin
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Comment créer votre propre annotation en Java et obtenir la valeur
Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
Comment ajouter un chemin de classe dans Spring Boot
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment obtenir et étudier Java SE8 Gold
Comment obtenir l'optimisation SIMD pour HotSpot JavaVM
[Rails] Comment émettre des messages de réussite et d'erreur
Comment créer la blockchain la plus simple de Ruby
[ruby] Comment recevoir la valeur de l'entrée standard?
Ruby Comment convertir entre les majuscules et les minuscules
Comment implémenter la pagination dans GraphQL (pour ruby)
Je veux obtenir la valeur en Ruby
[JPA] Comparez table1 et table2 pour obtenir et mettre à jour des données qui n'existent pas dans la table2.
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Comment démarrer un indice à partir d'un nombre arbitraire dans le traitement itératif Ruby
Comment effacer toutes les données d'une table particulière
[Ruby] Comment utiliser la sortie standard dans le branchement conditionnel
[Ruby] Récapitulatif de la façon d'obtenir des valeurs à partir d'une entrée standard [Mesures de contrôle des compétences Paiza]
[Ruby on Rails] Comment écrire enum en japonais
Rails / Ruby: Comment obtenir du texte HTML pour Mail
Comment obtenir des informations sur les tables associées dans les tables plusieurs-à-plusieurs
[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif
Comment créer un URI de données (base64) en Java
[Ruby On Rails] Comment réinitialiser DB dans Heroku
Comment lancer une autre commande dans un programme Ruby
De Java à Ruby !!
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
[Swift] Comment obtenir l'ID de document Firebase
(Ruby on Rails6) Comment créer un modèle et une table
[Kotlin] Comment obtenir l'adresse IP et l'agent utilisateur
Comment lancer Swagger UI et Swagger Editor dans Docker
Comment résoudre l'erreur SSL_connect dans le SDK PayPal Ruby