<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Orm auf cbrueggenolte.de</title>
    <link>https://cbrueggenolte.de/tags/orm/</link>
    <description>Neueste Beiträge in Orm auf cbrueggenolte.de</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <managingEditor>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</managingEditor>
    <webMaster>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</webMaster>
    <copyright>2018-2026 cbrueggenolte</copyright>
    <lastBuildDate>Sat, 19 Apr 2025 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://cbrueggenolte.de/tags/orm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>TypeScript Drizzle-ORM Demo</title>
      <link>https://cbrueggenolte.de/typescript-drizzle-orm-demo/</link>
      <pubDate>Sat, 19 Apr 2025 00:00:00 +0200</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/typescript-drizzle-orm-demo/</guid>
      <description>&lt;p&gt;Heute war ein entspannter Samstag. Ich habe mich wieder ans Bootcamp-Skript gesetzt und mich diesmal mit &lt;strong&gt;Drizzle ORM&lt;/strong&gt; für TypeScript beschäftigt – ein echtes Vergnügen, damit Datenbankabfragen zu erstellen.&lt;/p&gt;&#xA;&lt;p&gt;Entstanden ist dieses Repo: &lt;a href=&#34;https://github.com/cblte/drizzle-demo&#34;&gt;https://github.com/cblte/drizzle-demo&lt;/a&gt; – noch nicht perfekt, aber läuft schon richtig gut. Hier ein kurzer Auszug aus &lt;code&gt;index.ts&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Initialisierung&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;drizzle&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;drizzle-orm/node-postgres&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;./drizzle/schema&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Pool&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;pg&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;pool&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Pool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;connectionString&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;process.env.POSTGRES_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;drizzle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;schema&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Beispiel: Benutzer abrufen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getUsers() {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;select&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;getUsers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und das ist nur ein kleiner Teil – im Skript im Repo findest du komplette Beispiele für Delete, Insert, Update, Queries mit &lt;code&gt;eq/and/like&lt;/code&gt;, Transaktionen und Fehlerbehandlung.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Heute war ein entspannter Samstag. Ich habe mich wieder ans Bootcamp-Skript gesetzt und mich diesmal mit <strong>Drizzle ORM</strong> für TypeScript beschäftigt – ein echtes Vergnügen, damit Datenbankabfragen zu erstellen.</p>
<p>Entstanden ist dieses Repo: <a href="https://github.com/cblte/drizzle-demo">https://github.com/cblte/drizzle-demo</a> – noch nicht perfekt, aber läuft schon richtig gut. Hier ein kurzer Auszug aus <code>index.ts</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ts" data-lang="ts"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// Initialisierung
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">drizzle</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;drizzle-orm/node-postgres&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">users</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;./drizzle/schema&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">Pool</span> <span class="p">}</span> <span class="kr">from</span> <span class="s1">&#39;pg&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kr">const</span> <span class="nx">pool</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Pool</span><span class="p">({</span> <span class="nx">connectionString</span>: <span class="kt">process.env.POSTGRES_URL</span><span class="o">!</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kr">const</span> <span class="nx">db</span> <span class="o">=</span> <span class="nx">drizzle</span><span class="p">(</span><span class="nx">pool</span><span class="p">,</span> <span class="p">{</span> <span class="nx">schema</span><span class="o">:</span> <span class="p">{</span> <span class="nx">users</span> <span class="p">}</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">// Beispiel: Benutzer abrufen
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="kr">async</span> <span class="kd">function</span> <span class="nx">getUsers() {</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="k">return</span> <span class="k">await</span> <span class="nx">db</span><span class="p">.</span><span class="nx">select</span><span class="p">().</span><span class="kr">from</span><span class="p">(</span><span class="nx">users</span><span class="p">).</span><span class="nx">all</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nx">getUsers</span><span class="p">().</span><span class="nx">then</span><span class="p">(</span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">);</span></span></span></code></pre></div><p>Und das ist nur ein kleiner Teil – im Skript im Repo findest du komplette Beispiele für Delete, Insert, Update, Queries mit <code>eq/and/like</code>, Transaktionen und Fehlerbehandlung.</p>
<h3 id="warum-drizzle-so-gut-passt">Warum Drizzle so gut passt</h3>
<ul>
<li><strong>Typensicherheit &amp; schlanke API</strong> – klare TS-Typen bei Schema &amp; Abfragen</li>
<li><strong>Leichtgewichtig &amp; performant</strong> – ~7 KB, tree‑shakeable, serverless-ready (<a href="https://github.com/drizzle-team/drizzle-orm" title="drizzle-team/drizzle-orm: Headless TypeScript ORM with a ... - GitHub">github.com</a>, <a href="https://orm.drizzle.team/drizzle-studio/overview" title="Meet Drizzle Studio">orm.drizzle.team</a>)</li>
<li><strong>Migrationen &amp; Studio</strong> – mit <code>drizzle-kit</code> kannst du Migrations-Workflow und Drizzle Studio nutzen (<a href="https://orm.drizzle.team/docs/kit-overview" title="Migrations with Drizzle Kit">orm.drizzle.team</a>)</li>
</ul>
<p>Wenn du das Repo ausprobierst, würde mich interessieren:</p>
<ul>
<li>Klappt die Typ-Sicherheit für dich?</li>
<li>Hast du eigene Erweiterungen oder Ideen?</li>
</ul>
<p>Viel Spaß beim Ausprobieren – alles Wichtige steht im Repo. ;-)</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
