{"id":17083,"date":"2025-11-04T22:06:34","date_gmt":"2025-11-04T18:36:34","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=17083"},"modified":"2025-11-04T22:32:00","modified_gmt":"2025-11-04T19:02:00","slug":"everything-you-need-to-know-about-google-clouds-firestore-api","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/en\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/","title":{"rendered":"Everything you need to know about Google Cloud&#039;s Firestore API"},"content":{"rendered":"<p data-start=\"930\" data-end=\"957\">\n<h2 id=\"firestore-%da%86%db%8c%d8%b3%d8%aa%d8%9f\" data-start=\"930\" data-end=\"957\"><strong data-start=\"936\" data-end=\"955\">What is Firestore?<\/strong><\/h2>\n<p data-start=\"958\" data-end=\"1045\">Firestore is a Document\/Collection-based NoSQL cloud database that has the following features:<\/p>\n<ul>\n<li data-start=\"1047\" data-end=\"1301\">Structured and flexible storage<\/li>\n<li data-start=\"1047\" data-end=\"1301\">Real-time Synchronization capability<\/li>\n<li data-start=\"1047\" data-end=\"1301\">High-level security with Firebase Security Rules<\/li>\n<li data-start=\"1047\" data-end=\"1301\">Automatic scalability<\/li>\n<li data-start=\"1047\" data-end=\"1301\">Very low latency globally<\/li>\n<li data-start=\"1047\" data-end=\"1301\">Ability to execute complex queries<\/li>\n<li data-start=\"1047\" data-end=\"1301\">Suitable for small to enterprise projects<\/li>\n<\/ul>\n<blockquote data-start=\"1303\" data-end=\"1424\">\n<p data-start=\"1305\" data-end=\"1424\">Firestore in two modes <strong data-start=\"1326\" data-end=\"1341\">Native Mode<\/strong> (Firebase specific) and <strong data-start=\"1360\" data-end=\"1378\">Datastore Mode<\/strong> (Provided for GCP Enterprise services).<\/p>\n<\/blockquote>\n<hr data-start=\"1426\" data-end=\"1429\" \/>\n<h2 id=\"%d8%b3%d8%a7%d8%ae%d8%aa%d8%a7%d8%b1-%d8%af%d8%a7%d8%af%d9%87%d9%87%d8%a7-%d8%af%d8%b1-firestore\" data-start=\"1431\" data-end=\"1464\"><strong data-start=\"1433\" data-end=\"1464\">Data Structure in Firestore<\/strong><\/h2>\n<p data-start=\"1465\" data-end=\"1520\">Firestore uses a simple but powerful architecture:<\/p>\n<ul data-start=\"1522\" data-end=\"1689\">\n<li data-start=\"1522\" data-end=\"1566\">\n<p data-start=\"1524\" data-end=\"1566\"><strong data-start=\"1524\" data-end=\"1538\">Collection<\/strong> \u2192 A collection of Documents<\/p>\n<\/li>\n<li data-start=\"1567\" data-end=\"1605\">\n<p data-start=\"1569\" data-end=\"1605\"><strong data-start=\"1569\" data-end=\"1581\">Document<\/strong> \u2192 A JSON-like structure<\/p>\n<\/li>\n<li data-start=\"1606\" data-end=\"1653\">\n<p data-start=\"1608\" data-end=\"1653\"><strong data-start=\"1608\" data-end=\"1625\">Subcollection<\/strong> \u2192 Collection inside each Document<\/p>\n<\/li>\n<li data-start=\"1654\" data-end=\"1689\">\n<p data-start=\"1656\" data-end=\"1689\"><strong data-start=\"1656\" data-end=\"1665\">Field<\/strong> \u2192 Fields of each Document<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1691\" data-end=\"1704\">Sample structure:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>users (collection)\r\n  \u00a0\u2514\u2500\u2500 userId123 (document)\r\n\u00a0   \u251c\u2500\u2500 name: \"Ali\"\r\n    \u251c\u2500\u2500 age: 28\r\n   \u00a0\u2514\u2500\u2500 posts (subcollection)\r\n     \u00a0\u2514\u2500\u2500 postId981 (document)\r\n       \u00a0\u251c\u2500\u2500 title: \"My First Post\"\r\n        \u2514\u2500\u2500 likes: 52\r\n<\/code><\/pre>\n<\/div>\n<hr data-start=\"1969\" data-end=\"1972\" \/>\n<h2 id=\"%d9%86%d9%85%d9%88%d9%86%d9%87-%da%a9%d8%af%d9%87%d8%a7%db%8c-%da%a9%d8%a7%d8%b1%d8%a8%d8%b1%d8%af%db%8c-%d8%a8%d8%a7-firestore-api\" data-start=\"1974\" data-end=\"2018\"><strong data-start=\"1978\" data-end=\"2018\">Sample code examples using Firestore API<\/strong><\/h2>\n<h3 id=\"%db%b1-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a8%d8%a7-javascript-web-app-node-js\" data-start=\"2020\" data-end=\"2071\"><strong data-start=\"2023\" data-end=\"2071\">1. Use with JavaScript (Web App \/ Node.js)<\/strong><\/h3>\n<h4 id=\"%d9%86%d8%b5%d8%a8\" data-start=\"2073\" data-end=\"2084\"><strong data-start=\"2077\" data-end=\"2084\">Installation<\/strong><\/h4>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>npm install firebase<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 id=\"%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-firestore\" data-start=\"2119\" data-end=\"2145\"><strong data-start=\"2123\" data-end=\"2145\">Connecting to Firestore<\/strong><\/h4>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>import { initializeApp } from \"firebase\/app\";\r\nimport { getFirestore, doc, setDoc, getDoc } from \"firebase\/firestore\";\r\nconst firebaseConfig = {\r\napiKey: \"...\",\r\nauthDomain: \"...\",\r\nprojectId: \"...\",\r\n};\r\nconst app = initializeApp(firebaseConfig);\r\nconst db = getFirestore(app);<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 id=\"%d8%a7%d8%b6%d8%a7%d9%81%d9%87-%da%a9%d8%b1%d8%af%d9%86-document\" data-start=\"2436\" data-end=\"2463\"><strong data-start=\"2440\" data-end=\"2463\">Add Document<\/strong><\/h4>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>await setDoc(doc(db, \"users\", \"user1\"), {\r\nname: \"Ali\",\r\nage: 28,\r\njob: \"Developer\"\r\n});\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h4 id=\"%d8%ae%d9%88%d8%a7%d9%86%d8%af%d9%86-document\" data-start=\"2566\" data-end=\"2589\"><strong data-start=\"2570\" data-end=\"2589\">Reading Document<\/strong><\/h4>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>const docRef = doc(db, \"users\", \"user1\");\r\nconst snap = await getDoc(docRef);\r\nif (snap.exists()) {\r\nconsole.log(\"Data:\", snap.data());\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2739\" data-end=\"2742\" \/>\n<h3 id=\"%db%b2-firestore-rest-api\" data-start=\"2744\" data-end=\"2772\"><strong data-start=\"2747\" data-end=\"2772\">2. Firestore REST API<\/strong><\/h3>\n<h4 id=\"%d8%a7%d8%b1%d8%b3%d8%a7%d9%84-%d8%af%d8%b1%d8%ae%d9%88%d8%a7%d8%b3%d8%aa-post-%d8%a8%d8%b1%d8%a7%db%8c-%d8%a7%db%8c%d8%ac%d8%a7%d8%af-document\" data-start=\"2774\" data-end=\"2820\"><strong data-start=\"2778\" data-end=\"2820\">Send a POST request to create a Document<\/strong><\/h4>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>curl -X POST \\\r\n-H \"Content-Type: application\/json\" \\\r\n-H \"Authorization: Bearer $(gcloud auth print-access-token)\" \\\r\n-d '{\r\n\"fields\": {\r\n\"title\": {\"stringValue\": \"New Article\"},\r\n\"views\": {\"integerValue\": \"102\"}\r\n}\r\n}' \\\r\n\"https:\/\/firestore.googleapis.com\/v1\/projects\/YOUR_PROJECT\/databases\/(default)\/documents\/posts\"<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p style=\"text-align: center;\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/BjtxPj6jRM8?si=uSBHCAE_ZvcAepcK\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<hr data-start=\"3193\" data-end=\"3196\" \/>\n<h2 id=\"%d9%be%d8%b1%d9%88%da%98%d9%87%d9%87%d8%a7%db%8c%db%8c-%da%a9%d9%87-%d9%85%db%8c%d8%aa%d9%88%d8%a7%d9%86-%d8%a8%d8%a7-firestore-%d8%b3%d8%a7%d8%ae%d8%aa\" data-start=\"3198\" data-end=\"3246\"><strong data-start=\"3203\" data-end=\"3246\">Projects that can be built with Firestore<\/strong><\/h2>\n<h3 id=\"%db%b1-%d8%a7%d9%be%d9%84%db%8c%da%a9%db%8c%d8%b4%d9%86%d9%87%d8%a7%db%8c-%da%86%d8%aa-%d9%88-%d9%be%db%8c%d8%a7%d9%85%d8%b1%d8%b3%d8%a7%d9%86%db%8c-real-time-chat-app\" data-start=\"3248\" data-end=\"3311\"><strong data-start=\"3255\" data-end=\"3311\">1. Chat and messaging apps (Real-time Chat App)<\/strong><\/h3>\n<p data-start=\"3312\" data-end=\"3397\">Due to its instant synchronization capability, Firestore is one of the best options for building chat.<\/p>\n<h3 id=\"%db%b2-%d8%b3%db%8c%d8%b3%d8%aa%d9%85%d9%87%d8%a7%db%8c-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d9%85%d8%ad%d8%aa%d9%88%d8%a7-blog-cms\" data-start=\"3399\" data-end=\"3447\"><strong data-start=\"3406\" data-end=\"3447\">2. Content Management Systems (Blog, CMS)<\/strong><\/h3>\n<p data-start=\"3448\" data-end=\"3524\">Especially for small teams or startups that don&#039;t want to deal with servers.<\/p>\n<h3 id=\"%db%b3-%d8%a7%d9%be%d9%84%db%8c%da%a9%db%8c%d8%b4%d9%86%d9%87%d8%a7%db%8c-%d9%85%d9%88%d8%a8%d8%a7%db%8c%d9%84-ios-android-flutter\" data-start=\"3526\" data-end=\"3585\"><strong data-start=\"3533\" data-end=\"3585\">3. Mobile Apps (iOS \/ Android \/ Flutter)<\/strong><\/h3>\n<p data-start=\"3586\" data-end=\"3593\">Due to:<\/p>\n<ul data-start=\"3594\" data-end=\"3651\">\n<li data-start=\"3594\" data-end=\"3611\">\n<p data-start=\"3596\" data-end=\"3611\">Low Latency<\/p>\n<\/li>\n<li data-start=\"3612\" data-end=\"3628\">\n<p data-start=\"3614\" data-end=\"3628\">Simultaneous Sync<\/p>\n<\/li>\n<li data-start=\"3629\" data-end=\"3651\">\n<p data-start=\"3631\" data-end=\"3651\">Internal Offline Mode<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"%db%b4-%d8%af%d8%a7%d8%b4%d8%a8%d9%88%d8%b1%d8%af%d9%87%d8%a7%db%8c-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa%db%8c-real-time-admin-panels\" data-start=\"3653\" data-end=\"3712\"><strong data-start=\"3660\" data-end=\"3710\">4. Real-Time Management Dashboards (Admin Panels)<\/strong><\/h3>\n<p data-start=\"3713\" data-end=\"3771\">Such as online store dashboard, user statistics, order management.<\/p>\n<h3 id=\"%db%b5-%d9%81%d8%b1%d9%88%d8%b4%da%af%d8%a7%d9%87-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa%db%8c-%da%a9%d9%88%da%86%da%a9-%d9%88-%d9%85%d8%aa%d9%88%d8%b3%d8%b7\" data-start=\"3773\" data-end=\"3818\"><strong data-start=\"3780\" data-end=\"3816\">5. Small and medium-sized online store<\/strong><\/h3>\n<p data-start=\"3819\" data-end=\"3874\">Add products, categories, shopping carts, orders, etc.<\/p>\n<h3 id=\"%db%b6-%d8%a7%d9%be%d9%84%db%8c%da%a9%db%8c%d8%b4%d9%86%d9%87%d8%a7%db%8c-iot\" data-start=\"3876\" data-end=\"3906\"><strong data-start=\"3883\" data-end=\"3906\">6. IoT applications<\/strong><\/h3>\n<p data-start=\"3907\" data-end=\"3936\">Fast storage of sensor data.<\/p>\n<hr data-start=\"3938\" data-end=\"3941\" \/>\n<h2 id=\"%d9%86%d9%85%d9%88%d9%86%d9%87-%d9%be%d8%b1%d9%88%da%98%d9%87%d9%87%d8%a7%db%8c-%d9%85%d9%88%d9%81%d9%82%db%8c-%da%a9%d9%87-%d8%a7%d8%b2-firestore-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87\" data-start=\"3943\" data-end=\"4004\"><strong data-start=\"3947\" data-end=\"4004\">Examples of successful projects using Firestore<\/strong><\/h2>\n<ul data-start=\"4006\" data-end=\"4314\">\n<li data-start=\"4006\" data-end=\"4084\">\n<p data-start=\"4008\" data-end=\"4084\"><strong data-start=\"4008\" data-end=\"4032\">Alibaba Cloud Mobile<\/strong> \u2013 Using Firestore for Real-Time Data Management<\/p>\n<\/li>\n<li data-start=\"4085\" data-end=\"4155\">\n<p data-start=\"4087\" data-end=\"4155\"><strong data-start=\"4087\" data-end=\"4119\">The New York Times Crossword<\/strong> \u2013 Use for online multiplayer<\/p>\n<\/li>\n<li data-start=\"4156\" data-end=\"4212\">\n<p data-start=\"4158\" data-end=\"4212\"><strong data-start=\"4158\" data-end=\"4169\">Todoist<\/strong> \u2013 Synchronize user tasks across multiple devices<\/p>\n<\/li>\n<li data-start=\"4213\" data-end=\"4255\">\n<p data-start=\"4215\" data-end=\"4255\"><strong data-start=\"4215\" data-end=\"4225\">Shazam<\/strong> \u2013 Managing some cloud data<\/p>\n<\/li>\n<li data-start=\"4256\" data-end=\"4314\">\n<p data-start=\"4258\" data-end=\"4314\"><strong data-start=\"4258\" data-end=\"4269\">Hotstar<\/strong> \u2013 Save user data and profile settings<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"4316\" data-end=\"4393\">(Many services use Firestore behind the scenes without officially announcing it)<\/p>\n<hr data-start=\"4395\" data-end=\"4398\" \/>\n<h2 id=\"%d9%85%d8%b2%d8%a7%db%8c%d8%a7%db%8c-firestore\" data-start=\"4400\" data-end=\"4424\"><strong data-start=\"4404\" data-end=\"4424\">Firestore Benefits<\/strong><\/h2>\n<h3 id=\"%d9%85%d9%82%db%8c%d8%a7%d8%b3%d9%be%d8%b0%db%8c%d8%b1%db%8c-%d8%ae%d9%88%d8%af%da%a9%d8%a7%d8%b1\" data-start=\"4425\" data-end=\"4451\">Automatic scalability<\/h3>\n<p data-start=\"4452\" data-end=\"4477\">No need to manage the server.<\/p>\n<h3 id=\"%d8%b3%d8%b1%d8%b9%d8%aa-%d8%ae%d9%88%d8%a7%d9%86%d8%af%d9%86-%d8%a8%d8%a7%d9%84%d8%a7\" data-start=\"4479\" data-end=\"4503\">High reading speed<\/h3>\n<p data-start=\"4504\" data-end=\"4534\">Given the Global Edge architecture.<\/p>\n<h3 id=\"%d8%a7%d9%85%d9%86%db%8c%d8%aa-%d8%a8%d8%a7-firestore-security-rules\" data-start=\"4536\" data-end=\"4579\">Security with <strong data-start=\"4551\" data-end=\"4579\">Firestore Security Rules<\/strong><\/h3>\n<p data-start=\"4581\" data-end=\"4632\">Example Rule that only the account owner has read\/write permission:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-json\" data-lang=\"JSON\"><code>service cloud.firestore {\r\nmatch \/databases\/{database}\/documents {\r\nmatch \/users\/{uid} {\r\nallow read, write: if request.auth.uid == uid;\r\n}\r\n}\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><span style=\"color: #000000; font-size: 1.75rem;\">Offline Mode Support<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4838\" data-end=\"4853\">On mobile and web.<\/p>\n<h3 id=\"query%d9%87%d8%a7%db%8c-%d9%82%d8%af%d8%b1%d8%aa%d9%85%d9%86%d8%af\" data-start=\"4855\" data-end=\"4879\">Powerful Queries<\/h3>\n<p data-start=\"4880\" data-end=\"4924\">Filtering, sorting, range query, indexing.<\/p>\n<hr data-start=\"4926\" data-end=\"4929\" \/>\n<h2 id=\"%da%86%d8%a7%d9%84%d8%b4%d9%87%d8%a7-%d9%88-%d9%85%d8%ad%d8%af%d9%88%d8%af%db%8c%d8%aa%d9%87%d8%a7-%da%a9%d9%87-%d8%a8%d9%87%d8%aa%d8%b1-%d8%a7%d8%b3%d8%aa-%d9%82%d8%a8%d9%84-%d8%a7\" data-start=\"4931\" data-end=\"4995\"><strong data-start=\"4935\" data-end=\"4995\">Challenges and limitations (which are best to know before using)<\/strong><\/h2>\n<p data-start=\"4997\" data-end=\"5203\">\u274c No Join (it&#039;s NoSQL)<br data-start=\"5026\" data-end=\"5029\" \/>\u274c Complex queries require indexes.<br data-start=\"5066\" data-end=\"5069\" \/>\u274c Cost is calculated based on the number of Read\/Write\/Storage<br data-start=\"5122\" data-end=\"5125\" \/>\u274c Not suitable for very large datasets (TB and above)<br data-start=\"5172\" data-end=\"5175\" \/>\u274c Transactions are limited.<\/p>\n<hr data-start=\"5205\" data-end=\"5208\" \/>\n<h2 id=\"firestore-vs-realtime-database\" data-start=\"5210\" data-end=\"5248\"><strong data-start=\"5214\" data-end=\"5248\">Firestore vs Realtime Database<\/strong><\/h2>\n<div class=\"_tableContainer_1rjym_1\">\n<div class=\"group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table data-start=\"5249\" data-end=\"5507\" class=\"w-fit min-w-(--thread-content-width)\">\n<thead data-start=\"5249\" data-end=\"5284\">\n<tr data-start=\"5249\" data-end=\"5284\">\n<th data-start=\"5249\" data-end=\"5257\" data-col-size=\"sm\">Feature<\/th>\n<th data-start=\"5257\" data-end=\"5269\" data-col-size=\"sm\">Firestore<\/th>\n<th data-start=\"5269\" data-end=\"5284\" data-col-size=\"sm\">Realtime DB<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5321\" data-end=\"5507\">\n<tr data-start=\"5321\" data-end=\"5365\">\n<td data-start=\"5321\" data-end=\"5335\" data-col-size=\"sm\">Data structure<\/td>\n<td data-col-size=\"sm\" data-start=\"5335\" data-end=\"5352\">Document-based<\/td>\n<td data-col-size=\"sm\" data-start=\"5352\" data-end=\"5365\">JSON Tree<\/td>\n<\/tr>\n<tr data-start=\"5366\" data-end=\"5400\">\n<td data-start=\"5366\" data-end=\"5374\" data-col-size=\"sm\">Query<\/td>\n<td data-col-size=\"sm\" data-start=\"5374\" data-end=\"5386\">Very strong<\/td>\n<td data-col-size=\"sm\" data-start=\"5386\" data-end=\"5400\">Very limited<\/td>\n<\/tr>\n<tr data-start=\"5401\" data-end=\"5431\">\n<td data-start=\"5401\" data-end=\"5415\" data-col-size=\"sm\">Scalability<\/td>\n<td data-col-size=\"sm\" data-start=\"5415\" data-end=\"5422\">Top<\/td>\n<td data-col-size=\"sm\" data-start=\"5422\" data-end=\"5431\">Medium<\/td>\n<\/tr>\n<tr data-start=\"5432\" data-end=\"5460\">\n<td data-start=\"5432\" data-end=\"5439\" data-col-size=\"sm\">Price<\/td>\n<td data-col-size=\"sm\" data-start=\"5439\" data-end=\"5448\">Ordinary<\/td>\n<td data-col-size=\"sm\" data-start=\"5448\" data-end=\"5460\">Cheaper<\/td>\n<\/tr>\n<tr data-start=\"5461\" data-end=\"5507\">\n<td data-start=\"5461\" data-end=\"5477\" data-col-size=\"sm\">Uses<\/td>\n<td data-col-size=\"sm\" data-start=\"5477\" data-end=\"5491\">Modern apps<\/td>\n<td data-col-size=\"sm\" data-start=\"5491\" data-end=\"5507\">Simple Chat, IoT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"5509\" data-end=\"5558\">Firestore is a newer and more optimized version of Realtime DB.<\/p>\n<hr data-start=\"5560\" data-end=\"5563\" \/>\n<h2 id=\"%d8%a8%d9%87%d8%aa%d8%b1%db%8c%d9%86-%d8%b4%db%8c%d9%88%d9%87%d9%87%d8%a7-%d8%af%d8%b1-firestore-%d8%a8%d8%b1%d8%a7%db%8c-%d8%aa%d9%88%d9%84%db%8c%d8%af-%d8%ad%d8%b1%d9%81%d9%87\" data-start=\"5565\" data-end=\"5619\"><strong data-start=\"5569\" data-end=\"5619\">Firestore best practices for professional production<\/strong><\/h2>\n<h3 id=\"%db%b1-%d8%b3%d8%a7%d8%ae%d8%aa%d8%a7%d8%b1-%d8%af%d8%a7%d8%af%d9%87-%d8%b1%d8%a7-%d8%af%d8%b1%d8%b3%d8%aa-%d8%a7%d9%86%d8%aa%d8%ae%d8%a7%d8%a8-%da%a9%d9%86%db%8c%d8%af\" data-start=\"5621\" data-end=\"5664\">1. Choose the right data structure<\/h3>\n<p data-start=\"5665\" data-end=\"5697\">Preferably, do not create large documents.<\/p>\n<h3 id=\"%db%b2-%d8%a7%d8%b2-subcollection-%d8%a8%d8%b1%d8%a7%db%8c-%d8%a8%d8%ae%d8%b4%d8%a8%d9%86%d8%af%db%8c-%d8%af%d8%a7%d8%af%d9%87%d9%87%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87\" data-start=\"5699\" data-end=\"5762\">2. Use Subcollection to segment data<\/h3>\n<p data-start=\"5763\" data-end=\"5793\">Example: posts \u2192 comments \u2192 likes<\/p>\n<h3 id=\"%db%b3-query%d9%87%d8%a7%db%8c-%d8%b3%d9%86%da%af%db%8c%d9%86-%d8%b1%d8%a7-cache-%da%a9%d9%86%db%8c%d8%af\" data-start=\"5795\" data-end=\"5835\">3. Cache heavy queries<\/h3>\n<p data-start=\"5836\" data-end=\"5860\">To reduce the cost of reading.<\/p>\n<h3 id=\"%db%b4-%d8%a7%d8%b2-cloud-functions-%d8%a8%d8%b1%d8%a7%db%8c-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4%d9%87%d8%a7%db%8c-%d8%a8%da%a9%d8%a7%d9%86%d8%af-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7\" data-start=\"5862\" data-end=\"5928\">4. Use Cloud Functions for backend processing<\/h3>\n<p data-start=\"5929\" data-end=\"5983\">Such as sending notifications, creating indexes, and summarizing data.<\/p>\n<h3 id=\"%db%b5-log-%da%af%d8%b1%d9%81%d8%aa%d9%86-%d8%af%d8%b1-firestore-logging\" data-start=\"5985\" data-end=\"6027\">5. Logging in Firestore Logging<\/h3>\n<p data-start=\"6028\" data-end=\"6063\">To avoid unwanted costs.<\/p>\n<hr data-start=\"6065\" data-end=\"6068\" \/>\n<h2 id=\"%d9%86%d9%85%d9%88%d9%86%d9%87-%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%da%a9%d8%a7%d9%85%d9%84-%d8%a8%d9%84%d8%a7%da%af-%d8%a8%d8%a7-firestore\" data-start=\"6070\" data-end=\"6112\"><strong data-start=\"6074\" data-end=\"6112\">Example of a complete blog system with Firestore<\/strong><\/h2>\n<h3 id=\"%d8%b3%d8%a7%d8%ae%d8%aa%d8%a7%d8%b1-%d9%be%db%8c%d8%b4%d9%86%d9%87%d8%a7%d8%af%db%8c\" data-start=\"6114\" data-end=\"6134\">Proposed structure:<\/h3>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-scss\" data-lang=\"SCSS\"><code>posts (collection)\r\n  \u2514\u2500\u2500 postId\r\n    \u251c\u2500\u2500 title\r\n    \u251c\u2500\u2500 content\r\n    \u251c\u2500\u2500 authorId\r\n    \u251c\u2500\u2500 createdAt\r\n    \u2514\u2500\u2500 comments (subcollection)\r\n      \u2514\u2500\u2500 commentId\r\n        \u251c\u2500\u2500 userId\r\n        \u2514\u2500\u2500 message<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"%d9%85%d8%ab%d8%a7%d9%84-%d8%a7%d9%81%d8%b2%d9%88%d8%af%d9%86-%d9%be%d8%b3%d8%aa\" data-start=\"6394\" data-end=\"6414\">Example of adding a post:<\/h3>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\">\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>import { collection, addDoc, serverTimestamp } from \"firebase\/firestore\";\r\nawait addDoc(collection(db, \"posts\"), {\r\ntitle: \"First Blog Post\",\r\ncontent: \"This is the content...\",\r\nauthorId: \"u123\",\r\ncreatedAt: serverTimestamp()\r\n});<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"6661\" data-end=\"6664\" \/>\n<h2 id=\"%d8%ac%d9%85%d8%b9%d8%a8%d9%86%d8%af%db%8c\" data-start=\"6666\" data-end=\"6678\">Conclusion<\/h2>\n<p data-start=\"6680\" data-end=\"6807\"><strong data-start=\"6680\" data-end=\"6788\">Firestore is a powerful, real-time cloud database suitable for building fast, scalable, and serverless services.<\/strong><br data-start=\"6788\" data-end=\"6791\" \/>This service is suitable for:<\/p>\n<p data-start=\"6809\" data-end=\"6936\">\u2705 Website<br data-start=\"6818\" data-end=\"6821\" \/>\u2705 Mobile app<br data-start=\"6832\" data-end=\"6835\" \/>\u2705 Content management system<br data-start=\"6855\" data-end=\"6858\" \/>\u2705 Chat apps<br data-start=\"6869\" data-end=\"6872\" \/>\u2705 Realtime dashboards<br data-start=\"6893\" data-end=\"6896\" \/>\u2705 IoT projects<br data-start=\"6911\" data-end=\"6914\" \/>\u2705 Online stores<\/p>\n<p data-start=\"6938\" data-end=\"7069\">If you are building a product that requires <strong data-start=\"6978\" data-end=\"7027\">Instant sync, high speed, and manageable cost<\/strong> Yes, Firestore is one of the best options.<\/p>","protected":false},"excerpt":{"rendered":"Google Firestore is one of the most popular cloud NoSQL databases in the world, provided by Firebase and Google Cloud. Firestore is suitable for building real-time applications, is scalable, does not require server management, and is very fast. This database is available with REST API, gRPC, and various SDKs and is very popular with mobile, web, and backend developers. In this article, we will introduce Firestore in a complete and comprehensive way, with practical examples, projects that can be built with it, successful application examples, architecture, security, and best practices.","protected":false},"author":1,"featured_media":17085,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"video","meta":{"_yoast_wpseo_focuskw":"Firestore","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 Firestore API \u06af\u0648\u06af\u0644\u061b \u0645\u0639\u0631\u0641\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06a9\u062f\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0633\u0627\u062e\u062a\u060c \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631.","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"[]","_yoast_wpseo_primary_category":"481","footnotes":""},"categories":[349,481],"tags":[492,483,493,494],"class_list":{"0":"post-17083","1":"post","2":"type-post","3":"status-publish","4":"format-video","5":"has-post-thumbnail","7":"category-database","8":"category-google-cloud-platform","9":"tag-firestore","10":"tag-google-api","11":"tag-javascript","12":"tag-494","13":"post_format-post-format-video"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"description\" content=\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 Firestore API \u06af\u0648\u06af\u0644\u061b \u0645\u0639\u0631\u0641\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06a9\u062f\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0633\u0627\u062e\u062a\u060c \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/en\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 Firestore API \u06af\u0648\u06af\u0644\u061b \u0645\u0639\u0631\u0641\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06a9\u062f\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0633\u0627\u062e\u062a\u060c \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/en\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-04T18:36:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-04T19:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f\",\"datePublished\":\"2025-11-04T18:36:34+00:00\",\"dateModified\":\"2025-11-04T19:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/\"},\"wordCount\":159,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2025\\\/11\\\/04214905\\\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg\",\"keywords\":[\"Firestore\",\"Google API\",\"JavaScript\",\"\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\"],\"articleSection\":[\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\",\"\u06af\u0648\u06af\u0644 \u06a9\u0644\u0648\u062f\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/\",\"name\":\"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2025\\\/11\\\/04214905\\\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg\",\"datePublished\":\"2025-11-04T18:36:34+00:00\",\"dateModified\":\"2025-11-04T19:02:00+00:00\",\"description\":\"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 Firestore API \u06af\u0648\u06af\u0644\u061b \u0645\u0639\u0631\u0641\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06a9\u062f\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0633\u0627\u062e\u062a\u060c \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2025\\\/11\\\/04214905\\\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2025\\\/11\\\/04214905\\\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg\",\"width\":1793,\"height\":1110,\"caption\":\"Everything you need to know about Google Cloud's Firestore API\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/google-cloud-platform\\\/everything-you-need-to-know-about-google-clouds-firestore-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u06af\u0648\u06af\u0644 \u06a9\u0644\u0648\u062f\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/google-cloud-platform\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/en\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Everything you need to know about Google Cloud&#039;s Firestore API - ITPiran Blog","description":"A comprehensive guide to Google&#039;s Firestore API; introducing the architecture, applications, sample code, buildable projects, security tips, and best practices for developing fast and scalable apps.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/en\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/","og_locale":"en_US","og_type":"article","og_title":"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 Firestore API \u06af\u0648\u06af\u0644\u061b \u0645\u0639\u0631\u0641\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u06a9\u062f\u0647\u0627\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0633\u0627\u062e\u062a\u060c \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0627\u067e\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631.","og_url":"https:\/\/www.itpiran.net\/blog\/en\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2025-11-04T18:36:34+00:00","article_modified_time":"2025-11-04T19:02:00+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f","datePublished":"2025-11-04T18:36:34+00:00","dateModified":"2025-11-04T19:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/"},"wordCount":159,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg","keywords":["Firestore","Google API","JavaScript","\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646"],"articleSection":["\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647","\u06af\u0648\u06af\u0644 \u06a9\u0644\u0648\u062f"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/","url":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/","name":"Everything you need to know about Google Cloud&#039;s Firestore API - ITPiran Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg","datePublished":"2025-11-04T18:36:34+00:00","dateModified":"2025-11-04T19:02:00+00:00","description":"A comprehensive guide to Google&#039;s Firestore API; introducing the architecture, applications, sample code, buildable projects, security tips, and best practices for developing fast and scalable apps.","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2025\/11\/04214905\/everything-you-need-to-know-about-google-clouds-firestore-api.jpg","width":1793,"height":1110,"caption":"Everything you need to know about Google Cloud's Firestore API"},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/google-cloud-platform\/everything-you-need-to-know-about-google-clouds-firestore-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u06af\u0648\u06af\u0644 \u06a9\u0644\u0648\u062f","item":"https:\/\/www.itpiran.net\/blog\/category\/google-cloud-platform\/"},{"@type":"ListItem","position":3,"name":"\u0647\u0631\u0622\u0646\u0686\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 Firestore API Google Cloud \u0628\u062f\u0627\u0646\u06cc\u062f"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"Iranian Sustainable Trade News and Articles","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"Sustainable Iranian Business Blog","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"admin","url":"https:\/\/www.itpiran.net\/blog\/en\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/17083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/comments?post=17083"}],"version-history":[{"count":2,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/17083\/revisions"}],"predecessor-version":[{"id":17087,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/posts\/17083\/revisions\/17087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/media\/17085"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/media?parent=17083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/categories?post=17083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/en\/wp-json\/wp\/v2\/tags?post=17083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}