{"id":12555,"date":"2017-05-30T11:20:09","date_gmt":"2017-05-30T09:20:09","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12555"},"modified":"2017-05-30T11:21:05","modified_gmt":"2017-05-30T09:21:05","slug":"node-js-produrre-chiavi-univoche-uuid","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/node-js-produrre-chiavi-univoche-uuid\/","title":{"rendered":"Node.js: produrre chiavi univoche UUID"},"content":{"rendered":"<p>A volte nelle applicazioni, serve <strong>produrre dei codici univoci da utilizzare come chiavi<\/strong>, ad esempio, per il recupero\u00a0dei\u00a0dati salvati. Esiste un meccanismo, universalmente conosciuto come <strong>UUID<\/strong>, che svolge molto bene questo ruolo ed \u00e8 stato formalizzato con il documento <a href=\"http:\/\/www.ietf.org\/rfc\/rfc4122.txt\" target=\"_blank\" rel=\"noopener noreferrer\">RFC4122<\/a>.<\/p>\n<p>Il formato della chiave prodotta \u00e8 una sequenza alfanumerica simile alla\u00a0seguente:<\/p>\n<pre class=\"lang:sh decode:true\">f077c7b0-afd7-11e6-bde0-8ff5534d7f78<\/pre>\n<p>E&#8217; utilizzabile in vari linguaggi e anche <a href=\"http:\/\/www.devapp.it\/wordpress\/introduzione-a-node-js\/\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js<\/a> dispone di una <a href=\"https:\/\/github.com\/kelektiv\/node-uuid\" target=\"_blank\" rel=\"noopener noreferrer\">libreria<\/a> per farne uso.<\/p>\n<p>La si pu\u00f2 installare mediante <em>npm<\/em>:<\/p>\n<pre class=\"lang:sh decode:true\">&gt; npm install uuid<\/pre>\n<p>ed introdurla nel proprio script nel seguente modo:<\/p>\n<pre class=\"lang:js decode:true\">const uuid = require('uuid');<\/pre>\n<p>I codici recuperabili esistono in due varianti:<\/p>\n<ul>\n<li><strong>v4<\/strong>, quella di default, ottenibile mediante la funzione <em>uuid()<\/em>;<\/li>\n<li><strong>v1<\/strong>, la versione time-based, richiamabile con <em>uuid.v1()<\/em>.<\/li>\n<\/ul>\n<p>A titolo di esempio, possiamo farci stampare alcuni identificatori cos\u00ec prodotti all&#8217;interno di un ciclo:<\/p>\n<pre class=\"lang:js decode:true\">for (i=0;i&lt;4;i++)\r\n  console.log(uuid.v1());<\/pre>\n<p>e questo \u00e8 l&#8217;output che ne deriva:<\/p>\n<pre class=\"lang:sh decode:true\">f077c7b0-afd7-11e6-bde0-8ff5534d7f78\r\nf077eec0-afd7-11e6-bde0-8ff5534d7f78\r\nf07815d0-afd7-11e6-bde0-8ff5534d7f78\r\nf07815d1-afd7-11e6-bde0-8ff5534d7f78<\/pre>\n<p>Le sequenze prodotte a prima vista potrebbero sembrare identiche ma cos\u00ec non \u00e8 in quanto la prima porzione \u00e8 differente in ognuna di esse.<\/p>\n<p>Alla prossima!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A volte nelle applicazioni, serve produrre dei codici univoci da utilizzare come chiavi, ad esempio, per il&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12967,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[481],"tags":[1537,1539,1792],"class_list":["post-12555","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-risorse-utili","tag-node-js","tag-npm","tag-uuid"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12555"}],"version-history":[{"count":6,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12555\/revisions"}],"predecessor-version":[{"id":13056,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12555\/revisions\/13056"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12967"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}