Configuring Lucid and our Database Connection
In this lesson, we'll learn how we can configure Lucid to use a different driver other than SQLite; PostgreSQL is shown but MySQL and MSSQL are much the same. Then, we'll set up our connection details so that we can successfully connect to our database.
- Author
- Tom Gobich
- Published
- Feb 21
- Duration
- 4m 3s
Developer, dog lover, and burrito eater. Currently teaching AdonisJS, a fully featured NodeJS framework, and running Adocasts where I post new lessons weekly. Professionally, I work with JavaScript, .Net C#, and SQL Server.
Adocasts
Burlington, KY
Transcript
Configuring Lucid and our Database Connection
-
(upbeat music)
-
Okay, so our next focus is going to be Lucid,
-
AdonisJS's ORM.
-
It's going to allow us to easily communicate,
-
structure our database directly from our application.
-
It also comes with a query builder built atop of ConnectJS
-
that we can easily use to query various
-
and depthful information from our database.
-
Now, when we created our project,
-
AdonisJS started us off ready to go
-
if we dive into our config database file with SQLite.
-
However, I'm going to be using Postgres
-
and we're gonna cover how we can switch this configuration
-
over to Postgres, or if you're using MySQL or MSSQL
-
or one of the other supported drivers,
-
you can use the same approach to switch
-
to that particular driver as well.
-
Lucid's going to wrap everything regardless
-
of the driver that we use so that we have
-
one standardized API to work with.
-
So it really doesn't matter at the end of the day
-
what particular driver you're working with.
-
The only instances where that would matter
-
is whenever you're running raw SQLs against the database
-
using some feature that's not supported
-
within one of the other drivers.
-
So for the most part, we're a-okay to use
-
whatever driver we need to get going here.
-
If you're using SQLite, you can skip this next portion,
-
but since I'm using a different driver,
-
I'm going to want my database configuration
-
to be reconfigured.
-
So what we're going to do is delete
-
our database config altogether.
-
So let's just delete this out of our config directory,
-
move it to the trash.
-
Now, Lucid is already installed,
-
but we will want to reconfigure it.
-
So let's dive back into our terminal here,
-
stop our server, we can clear that out,
-
and let's run node ace configure@adonisjs-lucid.
-
Again, this was pre-installed
-
whenever we created our web application,
-
so we're good to just go ahead and run configure here
-
without the installation step.
-
It started us off by default with SQLite.
-
I'll be using Postgres if you're using MySQL or MSSQL,
-
you're okay to go ahead and select that appropriate driver.
-
Again, I'm going to be selecting Postgres here.
-
We'll have it go ahead and install
-
the required packages for that.
-
It's going to update our config, which we just deleted.
-
It won't overwrite the config, which is why we deleted it,
-
so that it will create a new file for it.
-
It updated our adonisrc.ts file,
-
updated our EMV, updated our start EMV,
-
installed the packages that we'll need,
-
including but not limited to types for Luxon,
-
which is the date/time package that AdonisJS uses
-
for Lucid, Postgres, and Luxon as a whole.
-
Cool.
-
So before we start our server backup,
-
we have those new EMV variables that we need to take care of.
-
So let's first dive into there.
-
So let's scroll down to our .emv file.
-
And if we scroll down just briefly here,
-
you'll see that we have one for dbhost, dbport,
-
dbuser, password, and database.
-
Now, within the second lesson of this series,
-
we went through and used pgadmin to create a new table
-
called Adonis6, particularly for this series.
-
So by default with Postgres,
-
everything here is going to be a okay.
-
We'll want to use our local host for the host.
-
The port should be by default 5432.
-
The user should be Postgres,
-
unless you particularly changed it.
-
And the password should be whatever password it is
-
that you selected whenever you created your Postgres user.
-
So for example, the one that I used is simply just password
-
since we're on our local machine.
-
It doesn't really need to be particularly secure
-
at this point in time.
-
Just needs to be something so that we can get in
-
and work with our database.
-
And then our db database is going to be the name
-
of the database that we created.
-
Ours was Adonis6, or maybe it was AdonisJS6.
-
Let's jump back into pgadmin.
-
And yeah, it was just Adonis6 right here.
-
So we'll leave that as is.
-
So we should have Lucid all configured up now.
-
We have our environment variables defined.
-
If we jump within our start directory
-
and take a look at the emv.ts,
-
scroll down a little bit here.
-
We have variables for connecting to the database connection.
-
We have all of these, they are all required.
-
So we're a-okay there.
-
Well, except for the password, that one's optional,
-
but still, we're a-okay there.
-
Let's scroll up to our new configuration
-
and take a look at that.
-
So our database config,
-
you can see the connection set to Postgres.
-
We have a connection information for Postgres.
-
The client's defined as pg.
-
And here's where it's defining all of the connection details
-
using our environment variables.
-
We'll talk about migrations here in a little bit,
-
but we have a couple of config options for this as well,
-
including how to sort it.
-
And where they are.
-
As you can see, they're going to be placed
-
within our database migrations directory.
-
Okay, cool.
-
So it's as easy as that.
-
We're ready to move forward and start working directly
-
with our database in the next lesson.
-
However, first, let's define the schema
-
for the actual database that we're going to be working with.
-
Introduction
-
Fundamentals
-
2.0Routes and How To Create Them5m 23s
-
2.1Rendering a View for a Route6m 29s
-
2.2Linking Between Routes7m 51s
-
2.3Loading A Movie Using Route Parameters9m 17s
-
2.4Validating Route Parameters6m 6s
-
2.5Vite and Our Assets6m 38s
-
2.6Setting Up Tailwind CSS9m 5s
-
2.7Reading and Supporting Markdown Content4m 32s
-
2.8Listing Movies from their Markdown Files8m 51s
-
2.9Extracting Reusable Code with Services7m 4s
-
2.10Cleaning Up Routes with Controllers4m 52s
-
2.11Defining A Structure for our Movie using Models9m 38s
-
2.12Singleton Services and the Idea of Caching6m 11s
-
2.13Environment Variables and their Validation4m 16s
-
2.14Improved Caching with Redis10m 44s
-
2.15Deleting Items and Flushing our Redis Cache6m 46s
-
2.16Quick Start Apps with Custom Starter Kits6m 28s
-
2.17Easy Imports with NodeJS Subpath Imports8m 40s
-
-
Building Views with EdgeJS
-
3.0EdgeJS Templating Basics8m 49s
-
3.1HTML Attribute and Class Utilities6m 9s
-
3.2Making A Reusable Movie Card Component10m 24s
-
3.3Component Tags, State, and Props4m 53s
-
3.4Use Slots To Make A Button Component6m 56s
-
3.5Extracting A Layout Component5m 13s
-
3.6State vs Share Data Flow2m 59s
-
3.7Share vs Global Data Flow6m 7s
-
3.8Form Basics and CSRF Protection6m 13s
-
3.9HTTP Method Spoofing HTML Forms3m 3s
-
3.10Easy SVG Icons with Edge Iconify7m 57s
-
-
Database and Lucid ORM Basics
-
4.0Configuring Lucid and our Database Connection4m 3s
-
4.1Understanding our Database Schema9m 35s
-
4.2Introducing and Defining Database Migrations18m 35s
-
4.3The Flow of Migrations8m 28s
-
4.4Introducing Lucid Models5m 43s
-
4.5Defining Our Models6m 49s
-
4.6The Basics of CRUD11m 56s
-
4.7Defining Required Data with Seeders11m 11s
-
4.8Stubbing Fake Data with Model Factories13m 48s
-
4.9Querying Our Movies with the Query Builder15m 30s
-
4.10Unmapped and Computed Model Properties3m 24s
-
4.11Altering Tables with Migrations7m 6s
-
4.12Adding A Profile Model, Migration, Factory, and Controller2m 57s
-
4.13SQL Parameters and Injection Protection9m 19s
-
4.14Reusable Query Statements with Model Query Scopes8m 11s
-
4.15Tapping into Model Factory States9m 15s
-
4.16Querying Recently Released and Coming Soon Movies4m 59s
-
4.17Generating A Unique Movie Slug With Model Hooks7m 59s
-
-
Lucid ORM Relationships
-
5.0Defining One to One Relationships Within Lucid Models5m 49s
-
5.1Model Factory Relationships2m 54s
-
5.2Querying Relationships and Eager Vs Lazy Loading5m 17s
-
5.3Cascading and Deleting Model Relationships5m 16s
-
5.4Defining One to Many Relationships with Lucid Models6m 56s
-
5.5Seeding Movies with One to Many Model Factory Relationships5m 24s
-
5.6Listing A Director's Movies with Relationship Existence Queries8m 41s
-
5.7Listing and Counting a Writer's Movies8m 41s
-
5.8Using Eager and Lazy Loading to Load A Movie's Writer and Director5m 18s
-
5.9Defining Many-To-Many Relationships and Pivot Columns9m 48s
-
5.10Many-To-Many Model Factory Relationships4m 50s
-
5.11A Deep Dive Into Relationship CRUD with Models18m 5s
-
5.12How To Create Factory Relationships from a Pool of Data13m 55s
-
5.13How To Query, Sort, and Filter by Pivot Table Data9m 47s
-
-
Working With Forms
-
6.0Accepting Form Data12m 15s
-
6.1Validating Form Data with VineJS9m 29s
-
6.2Displaying Validation Errors and Validating from our Request7m 16s
-
6.3Reusing Old Form Values After A Validation Error2m 3s
-
6.4Creating An EdgeJS Form Input Component5m 28s
-
6.5Creating A Login Form and Validator5m 1s
-
6.6How To Create A Custom VineJS Validation Rule9m 7s
-
-
Authentication & Middleware
-
The Flow of Middleware7m 49s
-
Authenticating A Newly Registered User4m 14s
-
Checking For and Populating an Authenticated User2m 10s
-
Logging Out An Authenticated User2m 24s
-
Logging In An Existing User6m 54s
-
Remembering A User's Authenticated Session6m 55s
-
Protecting Routes with Auth, Guest, and Admin Middleware5m 36s
-
-
Filtering and Paginating Queries
Join The Discussion! (0 Comments)
Please sign in or sign up for free to join in on the dicussion.
Be the first to Comment!