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.
Aucune base de données cloud SQL fournie par Firebase.
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
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.
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.
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.
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.
Il y a un bijou qui vous permet d'utiliser le firestore
gem 'google-cloud-firestore'
Est utilisé.
firebase.rb
class Firesbase
require 'google/cloud'
class_attribute :connecting
self.connecting = Google::Cloud.new(Nom du projet créé dans la console).firestore
end
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'
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 }
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
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