{"id":3591,"date":"2022-02-02T17:30:57","date_gmt":"2022-02-02T16:30:57","guid":{"rendered":"https:\/\/visionslabs.io\/firebase-cloud-functions\/"},"modified":"2022-02-02T17:31:00","modified_gmt":"2022-02-02T16:31:00","slug":"firebase-cloud-functions","status":"publish","type":"post","link":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/","title":{"rendered":"Firebase Cloud functions"},"content":{"rendered":"\n<p>Na konci minul\u00e9ho roku sme pom\u00e1hali jedn\u00e9mu n\u00e1\u0161mu klientovi pri \u00faprave a optimaliz\u00e1cii <strong>Firebase cloud functions<\/strong>. A tak sme si povedali, \u017ee by bolo dobr\u00e9 t\u00fato t\u00e9mu trochu rozp\u00edsa\u0165, preto\u017ee by to mohlo zauj\u00edma\u0165 aj \u010fal\u0161ie.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"co-je-to-firebase\">\u010co je Firebase?<\/h2>\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-us_600_400\"><a ref=\"magnificPopup\" href=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console.png\"><img decoding=\"async\" width=\"95\" height=\"400\" src=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console-95x400.png\" alt=\"\" class=\"wp-image-3574\" srcset=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console-95x400.png 95w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console-71x300.png 71w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console-244x1024.png 244w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-console.png 252w\" sizes=\"(max-width: 95px) 100vw, 95px\" \/><\/a><figcaption>Preh\u013ead Firebase<\/figcaption><\/figure><\/div>\n\n<p>Najsk\u00f4r by sme sa mali pozrie\u0165 na to, \u010do je <a href=\"https:\/\/firebase.google.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Firebase<\/a>. Aktu\u00e1lne patr\u00ed t\u00e1to slu\u017eba spolo\u010dnosti <strong>Google<\/strong>, ktor\u00e1 ju pred nejakou dobou k\u00fapila, preto\u017ee bola ve\u013emi popul\u00e1rna hlavne medzi mobiln\u00fdmi v\u00fdvoj\u00e1rmi, ktor\u00ed t\u00fato slu\u017ebu vyu\u017e\u00edvali na analytiku a hl\u00e1senie ch\u00fdb. Slu\u017eba je rozdelen\u00e1 do nieko\u013ek\u00fdch skup\u00edn:<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Build<\/strong> &#8211; ktor\u00fd obsahuje \u010dasti ako <em>Authentification<\/em>, <em>Firestore<\/em>, <em>Storage<\/em>, <em>Functions<\/em> a \u010fal\u0161ie<\/li><li><strong>Release a monitor <\/strong>&#8211; ktor\u00e1 obsahuje hlavne <em>Crashlytics<\/em> a <em>Test lab <\/em><\/li><li><strong>Analytics<\/strong> &#8211; obsahuj\u00face r\u00f4zne poh\u013eady na <em>analytick\u00e9 \u00fadaje<\/em><\/li><li><strong>Engage<\/strong> &#8211; kde n\u00e1jdeme <em>A\/B testovanie<\/em>, <em>cloud messaging<\/em> a \u010fal\u0161ie<\/li><\/ul>\n\n<p>Ako vid\u00edme, tak <strong>Firebase<\/strong> toho teraz obsahuje naozaj ve\u013ea a m\u00e1 r\u00f4zne aplik\u00e1cie od \u010disto analytick\u00e9ho a\u017e po funkcie, ktor\u00e9 v\u00e1m m\u00f4\u017eu simulova\u0165 v\u00e1\u0161 <strong>backend<\/strong> alebo <strong>server<\/strong> . Preto je ve\u013emi ob\u013e\u00faben\u00fd u mobiln\u00fdch v\u00fdvoj\u00e1rov, preto\u017ee nepotrebuj\u00fa \u010fal\u0161ieho kolegu na &#8222;<em>backend<\/em>&#8220; technol\u00f3gie, ktor\u00fd by im rie\u0161il ot\u00e1zku ukladania d\u00e1t na server alebo pr\u00e1cu s&nbsp;nimi na serveri.<\/p>\n\n<p>Potom samozrejme asi najzn\u00e1mej\u0161ia funkcia <strong>Firebase<\/strong> je <strong>Crashlytics<\/strong> &#8211; ako je z&nbsp;n\u00e1zvu mo\u017en\u00e9 rozpozna\u0165, jedn\u00e1 sa o slu\u017ebu, ktor\u00e1 v\u00e1m pom\u00e1ha s&nbsp;rie\u0161en\u00edm &#8222;<em>crash<\/em>&#8220; aplik\u00e1cie alebo ke\u010f mobiln\u00e9 aplik\u00e1cie spadne a vy ako v\u00fdvoj\u00e1r dostanete z\u00e1kladn\u00e9 inform\u00e1cie, na akom zariaden\u00edm (<em>myslen\u00e9 OS verzia, typ zariadenia, verzia aplik\u00e1cie<\/em>) va\u0161a aplik\u00e1cia a dokonca na akom riadku vo va\u0161om k\u00f3de, tak\u017ee potom m\u00f4\u017eete ve\u013emi r\u00fdchlo tak\u00fd &#8222;<em>bug<\/em>&#8220; odchyti\u0165 &#8211; opravi\u0165 a vyda\u0165 aktualiz\u00e1ciu.<\/p>\n\n<p>Z h\u013eadiska ceny je z\u00e1kladn\u00e9 pou\u017e\u00edvanie <strong>Firebase<\/strong> zadarmo &#8211; tzv. <strong>Spark plan<\/strong> &#8211; kedy m\u00e1te ist\u00e9 obmedzenie na po\u010dty alebo ve\u013ekosti d\u00e1t alebo requestov, ale pre za\u010d\u00ednaj\u00facu aplik\u00e1ciu je to v\u00e4\u010d\u0161inou viac ne\u017e dosta\u010duj\u00face . N\u00e1sledn\u00fd <strong>Blaze plan<\/strong>, je u\u017e platen\u00fd, ale vo forme, ko\u013eko toho &#8222;<em>spotrebujete<\/em>&#8220; tak to\u013eko zaplat\u00edte. &#8211; viac na str\u00e1nke <a href=\"https:\/\/firebase.google.com\/pricing\">Pricing<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"co-to-jsou-cloud-functions\">\u010co s\u00fa to Cloud functions?<\/h2>\n\n<p>Na str\u00e1nkach <strong>Firebase<\/strong> n\u00e1jdete hl\u00e1\u0161ku ku<strong> Cloud functions<\/strong> (<em>ktor\u00e9 patria do skupiny Build<\/em>), \u017ee sa jedn\u00e1 o &#8222;beh serverov\u00fdch aplik\u00e1ci\u00ed bez starosti o vlastn\u00fd server &#8211; niekedy tie\u017e n\u00e1jdeme, \u017ee sa jedn\u00e1 o <em>ServerLess<\/em> rie\u0161enie &#8211; tzn., \u017ee tu nie je \u017eiadny server. To samozrejme nie je pravda, preto\u017ee tieto <strong>cloud functions<\/strong> be\u017eia na serveroch Google, ale z&nbsp;poh\u013eadu pou\u017e\u00edvate\u013ea <strong>Firebase<\/strong> \u017eiadny server nevid\u00ed.<\/p>\n\n<p>O \u010do sa teda jedn\u00e1 &#8211; jedn\u00e1 sa o jednotliv\u00e9 funkcie, ktor\u00e9 s\u00fa nap\u00edsan\u00e9 v&nbsp;<strong>JavaScripte<\/strong> pr\u00edpadne v&nbsp;<strong>TypeScripte<\/strong>, ktor\u00fd n\u00e1sledne be\u017e\u00ed na <strong>NodeJS<\/strong> platforme. M\u00e1te pripraven\u00fa ich kni\u017enicu pre pr\u00e1cu s&nbsp;<strong>Firestore<\/strong> (<em>\u010do je v&nbsp;podstate va\u0161a datab\u00e1za<\/em>), pr\u00edpadne s&nbsp;\u010fal\u0161\u00edmi \u010das\u0165ami Firebase. Tak\u017ee m\u00e1te v\u0161etko jednoducho predpripraven\u00e9 a m\u00f4\u017eete si nap\u00edsa\u0165 svoju logiku, ktor\u00fa potrebujete. Pravdepodobne ide o najjednoduch\u0161ie rie\u0161enie pre beh <strong>NodeJs aplik\u00e1cie<\/strong>, ke\u010f potrebujete pracova\u0165 s&nbsp;d\u00e1tami, alebo napr\u00edklad s&nbsp;\u010fal\u0161\u00edmi API, ktor\u00e9 vyu\u017e\u00edva va\u0161e mobiln\u00e9 aplik\u00e1cie. Zaiste je to pre ve\u013ea developerov l\u00e1kav\u00e1 predstava, ako vyu\u017ei\u0165 server technol\u00f3gie bez starost\u00ed.<\/p>\n\n<h3 class=\"wp-block-heading\" id=\"jak-zacit-s-cloud-functions\">Ako za\u010da\u0165 s&nbsp;Cloud functions?<\/h3>\n\n<p>Jednoducho m\u00f4\u017eete za\u010da\u0165 s&nbsp;dokument\u00e1ciou <strong>Firebase<\/strong> &#8211; napr\u00edklad <a href=\"https:\/\/firebase.google.com\/docs\/functions\/get-started\" target=\"_blank\" rel=\"noreferrer noopener\"> tu<\/a>. Kde sa dozviete, \u017ee potrebujete <strong>Firebase Project<\/strong>, n\u00e1sledne na svojom po\u010d\u00edta\u010di <a href=\"https:\/\/nodejs.org\/en\/\">NodeJs<\/a> a ich <strong>Firebase CLI (<em>command line interface<\/em>) a samozrejme nejak\u00fd termin\u00e1l. A\u017e budete ma\u0165 v\u0161etko nain\u0161talovan\u00e9, tak m\u00f4\u017eete prejs\u0165 na inicializ\u00e1ciu projektu cez<\/strong><\/p>\n\n<pre class=\"wp-block-preformatted\">firebase login<\/pre>\n\n<pre class=\"wp-block-preformatted\"><em>firebase init functions<\/em><\/pre>\n\n<p>a n\u00e1sledne odpor\u00fa\u010dame za\u010da\u0165 projekt p\u00edsa\u0165 v&nbsp;<strong>TypeScript<\/strong> viac v&nbsp;<a href=\"https:\/\/firebase.google.com\/docs\/functions\/typescript\" target=\"_blank\" rel=\"noreferrer noopener\"> ich tutori\u00e1lu<\/a>.<\/p>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-us_600_400\"><a ref=\"magnificPopup\" href=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project.png\"><img decoding=\"async\" width=\"600\" height=\"233\" src=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project-600x233.png\" alt=\"Firebase - cloud functions - project\" class=\"wp-image-3565\" srcset=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project-600x233.png 600w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project-300x116.png 300w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project-1024x398.png 1024w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-project.png 1844w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><figcaption>Uk\u00e1\u017eka z&nbsp;<a href=\"https:\/\/firebase.google.com\/docs\/functions\/get-started\" target=\"_blank\" rel=\"noreferrer noopener\">firebase.google.com <\/a><\/figcaption><\/figure><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"emulator-pro-firebase-jako-dev-tools\">Emul\u00e1tor pre firebase ako dev tools<\/h2>\n\n<p>Pokia\u013e m\u00e1me nain\u0161talovan\u00fd <strong>Firebase CLI<\/strong>, tak by sme mali ma\u0165 pr\u00edstup k&nbsp;emul\u00e1toru, ktor\u00fd n\u00e1m dok\u00e1\u017ee niektor\u00e9 funkcie z&nbsp;Firebase emulova\u0165 na na\u0161om lok\u00e1lnom po\u010d\u00edta\u010di. Emul\u00e1tor dok\u00e1\u017ee emulova\u0165 napr\u00edklad Firestore (datab\u00e1zy) alebo napr\u00edklad aj sp\u00fa\u0161\u0165anie Cloud functions, to znamen\u00e1, \u017ee si m\u00f4\u017eeme na\u0161e nap\u00edsan\u00e9 funkcie aj debugova\u0165. Aby sme mohli dan\u00e9 funkcie debugova\u0165 a m\u00e1me typicky ich &#8222;sp\u00fa\u0161\u0165anie&#8220;, napr. pomocou pl\u00e1novan\u00e9ho sp\u00fa\u0161\u0165ania funkcie raz za 24 hod. Tak v&nbsp;tomto pr\u00edpade mus\u00edme najprv v&nbsp;pr\u00edkazovom riadku zada\u0165:<\/p>\n\n<pre class=\"wp-block-preformatted\">firebase functions:shell --inspect-functions<\/pre>\n\n<p>T\u00fdm sa n\u00e1m spust\u00ed mo\u017enos\u0165 si pomocou prehliada\u010da dosta\u0165 k&nbsp;<strong>NodeJS<\/strong> debuguru a to tak, \u017ee si zobraz\u00edme <strong>DevTools<\/strong> alebo<strong> N\u00e1stroje pre v\u00fdvoj\u00e1rov<\/strong> v&nbsp;Chrome a ak m\u00e1me spusten\u00e9, tak uvid\u00edme ikonku NodeJs v&nbsp;hornej li\u0161te vi\u010f obr\u00e1zok.<\/p>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-us_600_400 is-resized\"><a ref=\"magnificPopup\" href=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1.png\"><img decoding=\"async\" src=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1-600x175.png\" alt=\"Firebase - cloud functions - emulator -1\" class=\"wp-image-3568\" width=\"600\" height=\"175\" srcset=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1-600x175.png 600w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1-300x87.png 300w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1-1024x298.png 1024w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-1.png 1033w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><figcaption>N\u00e1stroje pre v\u00fdvoj\u00e1rov v&nbsp;Google Chrome<\/figcaption><\/figure><\/div>\n\n<p>N\u00e1sledne sa dostaneme do NodeJs debuger a vid\u00edme pripojenie, ktor\u00e9 aktu\u00e1lne m\u00e1me a m\u00f4\u017eeme si prepn\u00fa\u0165 na z\u00e1lo\u017eku sources a ozna\u010di\u0165 si, ak\u00fd riadok chceme ozna\u010di\u0165 pomocou breakpointu.<\/p>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-us_600_400\"><a ref=\"magnificPopup\" href=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-2.png\"><img decoding=\"async\" width=\"474\" height=\"400\" src=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-2-474x400.png\" alt=\"Firebase - cloud functions - emulator -2\" class=\"wp-image-3571\" srcset=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-2-474x400.png 474w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-2-300x253.png 300w, https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/Firebase-cloud-functions-emulator-2.png 773w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><figcaption>NodeJS pr\u00edstup k&nbsp;debugger<\/figcaption><\/figure><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"na-zaver\">Na z\u00e1ver<\/h2>\n\n<p>Pre mnoho v\u00fdvoj\u00e1rov sa jedn\u00e1 o ve\u013emi zauj\u00edmav\u00fa mo\u017enos\u0165, ako si roz\u0161\u00edri\u0165 mo\u017enosti, ktor\u00e9 sa daj\u00fa vyu\u017ei\u0165 pri fungovan\u00ed ich aplik\u00e1ci\u00ed. Tak\u017ee pokia\u013e nem\u00e1te vlastn\u00fd server alebo si nechcete plati\u0165 ihne\u010f vlastn\u00fd hosting alebo priestor pre vlastn\u00fa serverov\u00fa aplik\u00e1ciu, tak je <strong>Firebase Cloud function<\/strong> skvelou mo\u017enos\u0165ou, ako jednoducho z\u00edska\u0165 backend. Pre n\u00e1s t\u00fdm, \u017ee si p\u00ed\u0161eme vlastn\u00fd backend \u010das\u0165 webov\u00fdch aplik\u00e1ci\u00ed vo frameworku <strong><a href=\"https:\/\/nestjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">NestJS<\/a> strong&gt;, \u010do je progres\u00edvny framework v&nbsp;<strong>NodeJS<\/strong>. Tak n\u00e1m d\u00e1va jasn\u00fa logiku sa zauj\u00edma\u0165 aj o Cloud functions, preto\u017ee maj\u00fa spolo\u010dn\u00fa platformu <strong>NodeJS<\/strong>. Samozrejme m\u00e1 to svoje \u0161pecifik\u00e1, ale <strong>NodeJS<\/strong> a <strong>Typescript<\/strong> s\u00fa spolo\u010dn\u00fdm menovate\u013eom. Tak\u017ee, ak by ste chceli pom\u00f4c\u0165 so svojim Firebase Cloud functions alebo v\u0161eobecne s&nbsp;webovou aplik\u00e1ciou, tak sa nev\u00e1hajte n\u00e1m ozva\u0165 na e-mail <a href=\"mailto:hello@visionslabs.io\">hello@visionslabs.io<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na konci minul\u00e9ho roku sme pom\u00e1hali jedn\u00e9mu n\u00e1\u0161mu klientovi pri \u00faprave a optimaliz\u00e1cii Firebase cloud functions. A tak sme si povedali, \u017ee by bolo dobr\u00e9 t\u00fato t\u00e9mu trochu rozp\u00edsa\u0165, preto\u017ee by to mohlo zauj\u00edma\u0165 aj \u010fal\u0161ie. \u010co je Firebase? Najsk\u00f4r by sme sa mali pozrie\u0165 na to, \u010do je Firebase. Aktu\u00e1lne patr\u00ed t\u00e1to slu\u017eba spolo\u010dnosti&#8230;<\/p>\n","protected":false},"author":1,"featured_media":3584,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[149,193],"tags":[422,425,370,424,372,264,423],"class_list":["post-3591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nezaradene","category-zaujimavosti","tag-cloud-functions-sk","tag-crashlytics-sk","tag-firebase-sk","tag-firestore-sk","tag-google-sk","tag-nestjs-sk","tag-nodejs-sk"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Firebase Cloud functions - visionslabs<\/title>\n<meta name=\"description\" content=\"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\" \/>\n<meta property=\"og:locale\" content=\"sk_SK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Firebase Cloud functions - visionslabs\" \/>\n<meta property=\"og:description\" content=\"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\" \/>\n<meta property=\"og:site_name\" content=\"visionslabs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/visionslabs\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-02T16:30:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-02T16:31:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Leopold Podmol\u00edk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@visionslabs\" \/>\n<meta name=\"twitter:site\" content=\"@visionslabs\" \/>\n<meta name=\"twitter:label1\" content=\"Autor\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leopold Podmol\u00edk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Predpokladan\u00fd \u010das \u010d\u00edtania\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 min\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\"},\"author\":{\"name\":\"Leopold Podmol\u00edk\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/8002ebaef6052f50e66a94371d7764c9\"},\"headline\":\"Firebase Cloud functions\",\"datePublished\":\"2022-02-02T16:30:57+00:00\",\"dateModified\":\"2022-02-02T16:31:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\"},\"wordCount\":1080,\"publisher\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/#organization\"},\"image\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg\",\"keywords\":[\"Cloud functions\",\"Crashlytics\",\"Firebase\",\"Firestore\",\"Google\",\"NestJS\",\"NodeJS\"],\"articleSection\":{\"1\":\"Zauj\u00edmavosti\"},\"inLanguage\":\"sk-SK\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\",\"url\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\",\"name\":\"Firebase Cloud functions - visionslabs\",\"isPartOf\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg\",\"datePublished\":\"2022-02-02T16:30:57+00:00\",\"dateModified\":\"2022-02-02T16:31:00+00:00\",\"description\":\"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.\",\"breadcrumb\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#breadcrumb\"},\"inLanguage\":\"sk-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sk-SK\",\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage\",\"url\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg\",\"contentUrl\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Firebase Cloud functions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/visionslabs.io\/sk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Firebase Cloud functions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#website\",\"url\":\"https:\/\/visionslabs.io\/sk\/\",\"name\":\"visionslabs\",\"description\":\"Digit\u00e1ln\u00ed studio visionslabs se zab\u00fdv\u00e1 tvorbou web\u016f, aplikac\u00ed a digit\u00e1ln\u00edm marketingem\",\"publisher\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/visionslabs.io\/sk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sk-SK\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#organization\",\"name\":\"VisionsLabs - Po\u010d\u00edta\u010dov\u00e1 slu\u017eba s.r.o.\",\"url\":\"https:\/\/visionslabs.io\/sk\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sk-SK\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2020\/07\/visionslabs-logo-icon-1.svg\",\"contentUrl\":\"https:\/\/visionslabs.io\/wp-content\/uploads\/2020\/07\/visionslabs-logo-icon-1.svg\",\"width\":317,\"height\":90,\"caption\":\"VisionsLabs - Po\u010d\u00edta\u010dov\u00e1 slu\u017eba s.r.o.\"},\"image\":{\"@id\":\"https:\/\/visionslabs.io\/sk\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/visionslabs\/\",\"https:\/\/x.com\/visionslabs\",\"https:\/\/www.instagram.com\/visionslabs\/\",\"https:\/\/www.linkedin.com\/company\/visionslabs\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/8002ebaef6052f50e66a94371d7764c9\",\"name\":\"Leopold Podmol\u00edk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sk-SK\",\"@id\":\"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/61ff2dad8ddeb5d3d6cda0cb4b861bb91797c98c4da6550c31c087557182e89f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/61ff2dad8ddeb5d3d6cda0cb4b861bb91797c98c4da6550c31c087557182e89f?s=96&d=mm&r=g\",\"caption\":\"Leopold Podmol\u00edk\"},\"description\":\"CTO - dealing with both development and digital marketing\",\"sameAs\":[\"https:\/\/visionslabs.io\"],\"url\":\"https:\/\/visionslabs.io\/sk\/author\/admn_podmolik\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Firebase Cloud functions - visionslabs","description":"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.","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:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/","og_locale":"sk_SK","og_type":"article","og_title":"Firebase Cloud functions - visionslabs","og_description":"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.","og_url":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/","og_site_name":"visionslabs","article_publisher":"https:\/\/facebook.com\/visionslabs\/","article_published_time":"2022-02-02T16:30:57+00:00","article_modified_time":"2022-02-02T16:31:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","type":"image\/jpeg"}],"author":"Leopold Podmol\u00edk","twitter_card":"summary_large_image","twitter_creator":"@visionslabs","twitter_site":"@visionslabs","twitter_misc":{"Autor":"Leopold Podmol\u00edk","Predpokladan\u00fd \u010das \u010d\u00edtania":"5 min\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#article","isPartOf":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/"},"author":{"name":"Leopold Podmol\u00edk","@id":"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/8002ebaef6052f50e66a94371d7764c9"},"headline":"Firebase Cloud functions","datePublished":"2022-02-02T16:30:57+00:00","dateModified":"2022-02-02T16:31:00+00:00","mainEntityOfPage":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/"},"wordCount":1080,"publisher":{"@id":"https:\/\/visionslabs.io\/sk\/#organization"},"image":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage"},"thumbnailUrl":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","keywords":["Cloud functions","Crashlytics","Firebase","Firestore","Google","NestJS","NodeJS"],"articleSection":{"1":"Zauj\u00edmavosti"},"inLanguage":"sk-SK"},{"@type":"WebPage","@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/","url":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/","name":"Firebase Cloud functions - visionslabs","isPartOf":{"@id":"https:\/\/visionslabs.io\/sk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage"},"image":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage"},"thumbnailUrl":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","datePublished":"2022-02-02T16:30:57+00:00","dateModified":"2022-02-02T16:31:00+00:00","description":"Pozreli sme sa na Firebase Cloud functions - na \u010do je to dobr\u00e9? Pokia\u013e v\u00e1s zauj\u00edma toto rie\u0161enie, tak sa pozrite na n\u00e1\u0161 \u010dl\u00e1nok.","breadcrumb":{"@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#breadcrumb"},"inLanguage":"sk-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/"]}]},{"@type":"ImageObject","inLanguage":"sk-SK","@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#primaryimage","url":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","contentUrl":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","width":1200,"height":630,"caption":"Firebase Cloud functions"},{"@type":"BreadcrumbList","@id":"https:\/\/visionslabs.io\/sk\/firebase-cloud-functions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/visionslabs.io\/sk\/"},{"@type":"ListItem","position":2,"name":"Firebase Cloud functions"}]},{"@type":"WebSite","@id":"https:\/\/visionslabs.io\/sk\/#website","url":"https:\/\/visionslabs.io\/sk\/","name":"visionslabs","description":"Digit\u00e1ln\u00ed studio visionslabs se zab\u00fdv\u00e1 tvorbou web\u016f, aplikac\u00ed a digit\u00e1ln\u00edm marketingem","publisher":{"@id":"https:\/\/visionslabs.io\/sk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/visionslabs.io\/sk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sk-SK"},{"@type":"Organization","@id":"https:\/\/visionslabs.io\/sk\/#organization","name":"VisionsLabs - Po\u010d\u00edta\u010dov\u00e1 slu\u017eba s.r.o.","url":"https:\/\/visionslabs.io\/sk\/","logo":{"@type":"ImageObject","inLanguage":"sk-SK","@id":"https:\/\/visionslabs.io\/sk\/#\/schema\/logo\/image\/","url":"https:\/\/visionslabs.io\/wp-content\/uploads\/2020\/07\/visionslabs-logo-icon-1.svg","contentUrl":"https:\/\/visionslabs.io\/wp-content\/uploads\/2020\/07\/visionslabs-logo-icon-1.svg","width":317,"height":90,"caption":"VisionsLabs - Po\u010d\u00edta\u010dov\u00e1 slu\u017eba s.r.o."},"image":{"@id":"https:\/\/visionslabs.io\/sk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/visionslabs\/","https:\/\/x.com\/visionslabs","https:\/\/www.instagram.com\/visionslabs\/","https:\/\/www.linkedin.com\/company\/visionslabs"]},{"@type":"Person","@id":"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/8002ebaef6052f50e66a94371d7764c9","name":"Leopold Podmol\u00edk","image":{"@type":"ImageObject","inLanguage":"sk-SK","@id":"https:\/\/visionslabs.io\/sk\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/61ff2dad8ddeb5d3d6cda0cb4b861bb91797c98c4da6550c31c087557182e89f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/61ff2dad8ddeb5d3d6cda0cb4b861bb91797c98c4da6550c31c087557182e89f?s=96&d=mm&r=g","caption":"Leopold Podmol\u00edk"},"description":"CTO - dealing with both development and digital marketing","sameAs":["https:\/\/visionslabs.io"],"url":"https:\/\/visionslabs.io\/sk\/author\/admn_podmolik\/"}]}},"jetpack_featured_media_url":"https:\/\/visionslabs.io\/wp-content\/uploads\/2022\/02\/visionslabs-firebase-cloud-functions-2.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/posts\/3591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/comments?post=3591"}],"version-history":[{"count":0,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/posts\/3591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/media\/3584"}],"wp:attachment":[{"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/media?parent=3591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/categories?post=3591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visionslabs.io\/sk\/wp-json\/wp\/v2\/tags?post=3591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}