{"id":8201,"date":"2018-08-26T20:25:33","date_gmt":"2018-08-26T18:25:33","guid":{"rendered":"https:\/\/www.tomislavstankovic.com\/blog\/?p=8201"},"modified":"2019-01-05T19:46:55","modified_gmt":"2019-01-05T17:46:55","slug":"expressjs-nodejs-cron","status":"publish","type":"post","link":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/","title":{"rendered":"Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka"},"content":{"rendered":"<p>Do sada sam <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/nodemailer-nodejs-gmail-api\/\" rel=\"noopener\" target=\"_blank\">objavio<\/a> <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/nodemon-restart-nodejs\/\" rel=\"noopener\" target=\"_blank\">nekoliko<\/a> <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/nodejs-api-push-notifikacija\/\" rel=\"noopener\" target=\"_blank\">\u010dlanaka<\/a> kori\u0161tenju <em><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/jednostavan-nodejs-expressjs-rest-api\/\" rel=\"noopener\" target=\"_blank\">NodeJS API<\/a><\/em>-ja i svaki od njih ima istu poveznicu, a to je \u010dinjenica da se izvr\u0161avaju isklju\u010divo kada ih pozovem. U ve\u0107ini slu\u010dajeva to tako treba biti, ali postoje i <a href=\"https:\/\/scotch.io\/tutorials\/nodejs-cron-jobs-by-examples\" rel=\"noopener\" target=\"_blank\">slu\u010dajevi<\/a> u kojima \u017eelim da se odre\u0111eni zadatak izvr\u0161i bez da ga ru\u010dno moram pokrenuti pozivaju\u0107i neki <em><a href=\"https:\/\/smartbear.com\/learn\/performance-monitoring\/api-endpoints\/\" rel=\"noopener\" target=\"_blank\">API endpoint<\/a><\/em>. U tome \u0107e mi pomo\u0107i <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Cron\" rel=\"noopener\" target=\"_blank\">Cron Job<\/a><\/em>. <\/p>\n<h2>Postavljanje projekta<\/h2>\n<p>Kreiram mapu naziva <em>ExpressNodeCron<\/em> i unutar nje pokre\u0107em <a href=\"https:\/\/docs.npmjs.com\/cli\/init\" rel=\"noopener\" target=\"_blank\">naredbu<\/a>:<\/p>\n<pre class=\"lang:sh decode:true\">$ npm init --yes<\/pre>\n<p>Odmah nakon toga instaliram <em><a href=\"https:\/\/www.npmjs.com\/package\/express\" rel=\"noopener\" target=\"_blank\">Express.js<\/a><\/em> i <em><a href=\"https:\/\/www.npmjs.com\/package\/node-cron\" rel=\"noopener\" target=\"_blank\">Node Cron<\/a><\/em> pakete:<\/p>\n<pre class=\"lang:sh decode:true \" >$ npm install express --save\r\n$ npm install node-cron --save<\/pre>\n<p>Sada u mapi projekta mogu vidjeti datoteku <em><strong>package.json<\/strong><\/em> koja je osnova ovog projekta.<\/p>\n<pre class=\"lang:js decode:true \" title=\"package.json\" >{\r\n  \"name\": \"expressnodecron\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"ExpressJS Cron exaple\",\r\n  \"main\": \"index.js\",\r\n  \"scripts\": {\r\n    \"test\": \"echo \\\"Error: no test specified\\\" &amp;&amp; exit 1\"\r\n  },\r\n  \"author\": \"Tomislav Stankovi\u0107\",\r\n  \"license\": \"ISC\",\r\n  \"dependencies\": {\r\n    \"node-cron\": \"^1.2.1\",\r\n    \"express\": \"^4.16.3\"\r\n  }\r\n}<\/pre>\n<h2>Kreiranje API-ja<\/h2>\n<p>Unutar datoteke <strong><em>index.js<\/em><\/strong> koju sam upravo kreirao kopiram sljede\u0107i sadr\u017eaj:<\/p>\n<pre class=\"lang:js decode:true \" title=\"index.js\" >var express = require('express');\r\nvar app = express();\r\nvar cron = require(\"node-cron\");\r\n \r\nvar port = process.env.PORT || 8080;\r\n \r\nvar apiRoutes = express.Router();\r\n \r\napiRoutes.get('\/', function(req, res) {\r\n    \/\/ako je sve ispravno postavljeno kao odgovor dobijem ovu poruku\r\n    res.json({ message: 'API radi!' });   \r\n});\r\n \r\napp.use('\/api', apiRoutes);\r\n \r\napp.listen(port);\r\nconsole.log('API je pokrenut na portu:' + ' ' + port);<\/pre>\n<p><em>API<\/em> odmah testiram na putanji <a href=\"http:\/\/localhost:8080\/api\/\" rel=\"noopener\" target=\"_blank\">http:\/\/localhost:8080\/api\/<\/a><\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/express-rate-limit-1-min.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/express-rate-limit-1-min.png\" alt=\"ExpressJS API\" width=\"836\" height=\"381\" class=\"aligncenter size-full wp-image-8155\" srcset=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/express-rate-limit-1-min.png 836w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/express-rate-limit-1-min-300x137.png 300w, https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/express-rate-limit-1-min-768x350.png 768w\" sizes=\"auto, (max-width: 836px) 100vw, 836px\" \/><\/a><\/p>\n<h2>Cron Job funkcionalnost<\/h2>\n<p>Sada pratim dostupnu dokumentaciju na adresi <a href=\"https:\/\/www.npmjs.com\/package\/node-cron\" rel=\"noopener\" target=\"_blank\">https:\/\/www.npmjs.com\/package\/node-cron <\/a><\/p>\n<p>Na sljede\u0107em primjeru nalazi se osnova <em>cron job<\/em> funkcionalnosti. <\/p>\n<pre class=\"lang:js decode:true \" title=\"index.js\" >cron.schedule(\"* * * * *\", function() {\r\n    console.log(\"izvr\u0161avanje zadatka svake minute\");\r\n});<\/pre>\n<p>Na liniji 1 nalazi se  <span class=\"lang:js decode:true  crayon-inline \" >&#8220;* * * * *&#8221;<\/span> \u0161to ozna\u010dava odabrani interval u kojemu \u0107e se odre\u0111eni zadatak izvr\u0161iti. <\/p>\n<pre class=\"lang:default decode:true   \" > # \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 sekunde (opcionalno), vrijednost: 0 - 59\r\n # \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute, vrijednost: 0-59\r\n # \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 sati, vrijednost: 0-23\r\n # \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 dan u mjesecu, vrijednost: 1-31\r\n # \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500 mjesec, vrijednost: 1-12 (ili nazivi)\r\n # \u2502 \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500 dan u tjednu, vrijednost: 0-7 (ili nazivi, 0 ili 7 ozna\u010dava nedjelju)\r\n # \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\r\n # \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\r\n # * * * * * *<\/pre>\n<p>Na liniji 2 nalazi se zadatak koji \u0107e se izvr\u0161iti u zadanom intervalu. <\/p>\n<p><a href=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-1.gif\" alt=\"Node.js Cron Job \u2013 automatsko izvr\u0161avanje zakazanih zadataka\" width=\"978\" height=\"431\" class=\"aligncenter size-full wp-image-8215\" \/><\/a><\/p>\n<p>Osim ranije spomenutog intervala mogu\u0107e su i sljede\u0107e kombinacije:<\/p>\n<p>&#8211; vi\u0161e vrijednosti odvojenih zarezom<\/p>\n<pre class=\"lang:js decode:true \" >cron.schedule('1,2,4,5 * * * *', function(){\r\n  console.log('izvr\u0161avanje nakon 1, 2, 4 i 5 minuta');\r\n});<\/pre>\n<p>&#8211; kori\u0161tenje raspona vrijednosti<\/p>\n<pre class=\"lang:js decode:true \" >cron.schedule('1-5 * * * *', function(){\r\n  console.log('izvr\u0161avanje zadatka od 1. do 5. minute');\r\n});<\/pre>\n<p>&#8211; izvr\u0161avanje u koracima<\/p>\n<pre class=\"lang:js decode:true \" >cron.schedule('*\/2 * * * *', function(){\r\n  console.log('izvr\u0161avanje zadataka svake dvije minute');\r\n});\r\n<\/pre>\n<p>&#8211; kori\u0161tenje naziva mjeseca i dana umjesto brojeva (moraju biti na engleskom jeziku)<\/p>\n<pre class=\"lang:js decode:true \" >cron.schedule('* * * August Sunday', function(){\r\n    console.log('izvr\u0161avanje svake nedjelje u osmom mjesecu');\r\n});<\/pre>\n<p>Svi ranije navedeni zadaci pokre\u0107u se prilikom startanja <em>NodeJS<\/em> servera, ali postoje jo\u0161 i dodatne metode pomo\u0107u kojih je mogu\u0107e u odre\u0111enom trenutku pokrenuti neki <em>Cron Job<\/em>, stopirati ga ili skroz ugasiti.<\/p>\n<h5>Start <span class=\"lang:sh decode:true  crayon-inline \" >task.start();<\/span><\/h5>\n<pre class=\"lang:js decode:true \" >var cron = require('node-cron');\r\n \r\nvar task = cron.schedule('* * * * *', function() {\r\n  console.log('pokrenuto izvr\u0161avanje zadatka');\r\n}, false);\r\n \r\ntask.start();<\/pre>\n<h5>Stop <span class=\"lang:sh decode:true  crayon-inline \" >task.stop();<\/span><\/h5>\n<p>Jednom stopirati zadatak mogu\u0107e je ponovno pokrenuti.<\/p>\n<pre class=\"lang:js decode:true \" >var cron = require('node-cron');\r\n \r\nvar task = cron.schedule('* * * * *', function() {\r\n  console.log('izvr\u0161ava se svake minute do stopiranja');\r\n});\r\n \r\ntask.stop();<\/pre>\n<p>Primjer:<\/p>\n<p>Pozivanjem putanje <a href=\"http:\/\/localhost:8080\/api\/stopiraj\" rel=\"noopener\" target=\"_blank\">http:\/\/localhost:8080\/api\/stopiraj<\/a> zaustavljam <em>Cron Job<\/em>.<\/p>\n<pre class=\"lang:js decode:true   \" >var task =  cron.schedule(\"* * * * *\", function() {\r\n    console.log(\"izvr\u0161avanje zadatka svake minute\", new Date());\r\n});\r\n\r\napiRoutes.get('\/stopiraj', function(req, res) {\r\n    task.stop();\r\n    res.json({ message: 'Zadatak zaustavljen!' });   \r\n});<\/pre>\n<h5>Destroy <span class=\"lang:sh decode:true  crayon-inline \" >task.destroy();<\/span><\/h5>\n<p>Jednom prekinuti zadatak nije mogu\u0107e ponovno pokrenuti.<\/p>\n<pre class=\"lang:js decode:true \" >var cron = require('node-cron');\r\n \r\nvar task = cron.schedule('* * * * *', function() {\r\n  console.log('ne\u0107e se vi\u0161e izvr\u0161avati, niti ga je mogu\u0107e ponovno pokrenuti');\r\n});\r\n \r\ntask.destroy();<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Do sada sam objavio nekoliko \u010dlanaka kori\u0161tenju NodeJS API-ja i svaki od njih ima istu poveznicu, a to je \u010dinjenica da se izvr\u0161avaju isklju\u010divo kada ih pozovem. U ve\u0107ini slu\u010dajeva to tako treba biti, ali postoje i slu\u010dajevi u kojima \u017eelim da se odre\u0111eni zadatak izvr\u0161i bez da ga ru\u010dno moram pokrenuti pozivaju\u0107i neki API &hellip; <a href=\"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/\" class=\"more-link\">Nastavi \u010ditati <span class=\"screen-reader-text\">Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":8210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[565,351],"tags":[532,533,375,374],"class_list":["post-8201","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-backend","category-razvoj","tag-cron","tag-cron-job","tag-express-js","tag-nodejs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107<\/title>\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.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/\" \/>\n<meta property=\"og:locale\" content=\"hr_HR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107\" \/>\n<meta property=\"og:description\" content=\"Do sada sam objavio nekoliko \u010dlanaka kori\u0161tenju NodeJS API-ja i svaki od njih ima istu poveznicu, a to je \u010dinjenica da se izvr\u0161avaju isklju\u010divo kada ih pozovem. U ve\u0107ini slu\u010dajeva to tako treba biti, ali postoje i slu\u010dajevi u kojima \u017eelim da se odre\u0111eni zadatak izvr\u0161i bez da ga ru\u010dno moram pokrenuti pozivaju\u0107i neki API &hellip; Nastavi \u010ditati Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomislav Stankovi\u0107\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-26T18:25:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-01-05T17:46:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"825\" \/>\n\t<meta property=\"og:image:height\" content=\"510\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tomislav Stankovi\u0107\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisao\/la\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tomislav Stankovi\u0107\" \/>\n\t<meta name=\"twitter:label2\" content=\"Procijenjeno vrijeme \u010ditanja\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/\"},\"author\":{\"name\":\"Tomislav Stankovi\u0107\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"headline\":\"Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka\",\"datePublished\":\"2018-08-26T18:25:33+00:00\",\"dateModified\":\"2019-01-05T17:46:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/\"},\"wordCount\":312,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/NodeJS-ExpressJS-CronJob-min.jpg\",\"keywords\":[\"Cron\",\"Cron Job\",\"Express.js\",\"NodeJS\"],\"articleSection\":[\"Backend\",\"Razvoj\"],\"inLanguage\":\"hr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/\",\"name\":\"Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/NodeJS-ExpressJS-CronJob-min.jpg\",\"datePublished\":\"2018-08-26T18:25:33+00:00\",\"dateModified\":\"2019-01-05T17:46:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#breadcrumb\"},\"inLanguage\":\"hr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/NodeJS-ExpressJS-CronJob-min.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/NodeJS-ExpressJS-CronJob-min.jpg\",\"width\":825,\"height\":510,\"caption\":\"Node.js Cron Job \u2013 automatsko izvr\u0161avanje zakazanih zadataka\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/expressjs-nodejs-cron\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Po\u010detna stranica\",\"item\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\",\"name\":\"Tomislav Stankovi\u0107\",\"description\":\"Sam svoj bloger\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"hr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0329c549c57700034ea77f5d3d78396d\",\"name\":\"Tomislav Stankovi\u0107\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\",\"width\":248,\"height\":165,\"caption\":\"Tomislav Stankovi\u0107\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/cropped-TomislavStankovic.jpg\"},\"description\":\"Bloger \u0161irokog raspona interesa od kojih dio voli objaviti na ovom blogu. U neslobodno vrijeme Angular developer mobilnih i web aplikacija.\",\"sameAs\":[\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tomislavstankovic\\\/\"],\"url\":\"https:\\\/\\\/www.tomislavstankovic.com\\\/blog\\\/author\\\/tomislavstankovic\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107","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.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/","og_locale":"hr_HR","og_type":"article","og_title":"Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107","og_description":"Do sada sam objavio nekoliko \u010dlanaka kori\u0161tenju NodeJS API-ja i svaki od njih ima istu poveznicu, a to je \u010dinjenica da se izvr\u0161avaju isklju\u010divo kada ih pozovem. U ve\u0107ini slu\u010dajeva to tako treba biti, ali postoje i slu\u010dajevi u kojima \u017eelim da se odre\u0111eni zadatak izvr\u0161i bez da ga ru\u010dno moram pokrenuti pozivaju\u0107i neki API &hellip; Nastavi \u010ditati Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka","og_url":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/","og_site_name":"Tomislav Stankovi\u0107","article_published_time":"2018-08-26T18:25:33+00:00","article_modified_time":"2019-01-05T17:46:55+00:00","og_image":[{"width":825,"height":510,"url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg","type":"image\/jpeg"}],"author":"Tomislav Stankovi\u0107","twitter_card":"summary_large_image","twitter_misc":{"Napisao\/la":"Tomislav Stankovi\u0107","Procijenjeno vrijeme \u010ditanja":"3 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#article","isPartOf":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/"},"author":{"name":"Tomislav Stankovi\u0107","@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"headline":"Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka","datePublished":"2018-08-26T18:25:33+00:00","dateModified":"2019-01-05T17:46:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/"},"wordCount":312,"commentCount":0,"publisher":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"image":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg","keywords":["Cron","Cron Job","Express.js","NodeJS"],"articleSection":["Backend","Razvoj"],"inLanguage":"hr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/","url":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/","name":"Node.js Cron Job - automatsko izvr\u0161avanje zakazanih zadataka - Tomislav Stankovi\u0107","isPartOf":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#primaryimage"},"image":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg","datePublished":"2018-08-26T18:25:33+00:00","dateModified":"2019-01-05T17:46:55+00:00","breadcrumb":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#breadcrumb"},"inLanguage":"hr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/"]}]},{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#primaryimage","url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg","contentUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2018\/08\/NodeJS-ExpressJS-CronJob-min.jpg","width":825,"height":510,"caption":"Node.js Cron Job \u2013 automatsko izvr\u0161avanje zakazanih zadataka"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tomislavstankovic.com\/blog\/expressjs-nodejs-cron\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Po\u010detna stranica","item":"https:\/\/www.tomislavstankovic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Node.js Cron Job &#8211; automatsko izvr\u0161avanje zakazanih zadataka"}]},{"@type":"WebSite","@id":"https:\/\/www.tomislavstankovic.com\/blog\/#website","url":"https:\/\/www.tomislavstankovic.com\/blog\/","name":"Tomislav Stankovi\u0107","description":"Sam svoj bloger","publisher":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.tomislavstankovic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"hr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.tomislavstankovic.com\/blog\/#\/schema\/person\/0329c549c57700034ea77f5d3d78396d","name":"Tomislav Stankovi\u0107","image":{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","url":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","contentUrl":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg","width":248,"height":165,"caption":"Tomislav Stankovi\u0107"},"logo":{"@id":"https:\/\/www.tomislavstankovic.com\/blog\/wp-content\/uploads\/2019\/10\/cropped-TomislavStankovic.jpg"},"description":"Bloger \u0161irokog raspona interesa od kojih dio voli objaviti na ovom blogu. U neslobodno vrijeme Angular developer mobilnih i web aplikacija.","sameAs":["https:\/\/www.tomislavstankovic.com\/blog\/","https:\/\/www.linkedin.com\/in\/tomislavstankovic\/"],"url":"https:\/\/www.tomislavstankovic.com\/blog\/author\/tomislavstankovic\/"}]}},"_links":{"self":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/8201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/comments?post=8201"}],"version-history":[{"count":25,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/8201\/revisions"}],"predecessor-version":[{"id":8228,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/posts\/8201\/revisions\/8228"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/media\/8210"}],"wp:attachment":[{"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/media?parent=8201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/categories?post=8201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tomislavstankovic.com\/blog\/wp-json\/wp\/v2\/tags?post=8201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}