● videoAuthorization
Authorization, Part 1

Unlock The Imposter's Frontend Accelerator
Subscribe for full access to every course, or buy this one on its own.
SECTION
Authorization
NEXT UP
Authorization, Part 2
COURSE
The Imposter's Frontend Accelerator
32 lessons
About this lesson
We can't escape it: we need a database! We have lots of choices but I'm going to go with what I would really do, so here we go!
Considerations
How do we want to store our data and, more importantly, how should we get started?
- Keep ignoring it and use something like
json-server - Use a hosted system that's easy, like Supabase or Firebase
- Roll up our sleeves and start building our models
I don't like the idea of writing code I know I'll throw away, so maybe we go with the 3rd option. Which leaves the question...
Why Not Firebase or Supabase?
Short answer: these are great choices which I'll get into later, but only if you understand:
- They replace your entire backend and API
- Security rules! So easy to mess up.
- They also replace your application state, in some ways (if you go full realtime)
My User Code
I have some code ready to go that I added to the project and we'll walk through
Sequelize Snippets
I use a few snippets for VS Code and here they are:
<span class="hljs-attr">"Sequelize TEXT"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"prefix"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"mft"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"body"</span> <span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"$0: DataTypes.TEXT,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"Sequelize field"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"prefix"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"mf"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"body"</span> <span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"$0: {"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" type: DataTypes.TEXT,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" allowNull: false,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"},"</span><span class="hljs-punctuation">,</span>
<span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"Sequelize money"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"prefix"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"mfm"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"body"</span> <span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"$0: {"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" type: \"numeric(10,2)\","</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" allowNull: false,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" defaultValue: 0,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"},"</span><span class="hljs-punctuation">,</span>
<span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"Sequelize Model"</span> <span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"prefix"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"mod"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"body"</span> <span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"const { Model, DataTypes } = require('sequelize');"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"class $1 extends Model{}"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"exports.init = function(sequelize){"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" $1.init({"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" $2: {"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" type: DataTypes.TEXT,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" allowNull: false,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" unique: true"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" },"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" }, {"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" sequelize,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" underscored: true,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" timestamps: false,"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" hooks : {"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" //https://github.com/sequelize/sequelize/blob/v6/src/hooks.js#L7"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" }"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" });"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">" return { $1 };"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"}"</span><span class="hljs-punctuation">,</span>
<span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span>
Unlock The Imposter's Frontend Accelerator
Subscribe for full access to every course, or buy this one on its own.