Dependency Injection in JavaScript

Sdílet
Vložit
  • čas přidán 4. 04. 2021
  • Learn how to use dependency injection in a JavaScript application to decouple a MySQL database from an express HTTP server. This will help us be able to mock the database for a future video.
    🔗 Text version:
    sammeechward.com/dependency-i...
    🔗 Code:
    github.com/Sam-Meech-Ward/dep...
    🔗 Moar Links
    My Website: www.sammeechward.com
    Instagram: / meech_ward
    Github: github.com/orgs/Sam-Meech-Ward
    TikTok: / meech.s.ward
  • Věda a technologie

Komentáře • 52

  • @leetcodeking4859
    @leetcodeking4859 Před rokem +9

    Thank you Sam. Please keep making videos. You are 1000% easier to understand than my teachers. You are a life send. Thank you 100 times.

  • @AmberCheaaa
    @AmberCheaaa Před 3 lety +7

    This was very clear. I was struggling to understand the concept but with this I get it completely now! Thanks

  • @NeilTruick
    @NeilTruick Před 2 lety +1

    My primary development language is C#, so I was very interested in learning how to mock for testing in TypeScript. I've got a few years of JavaScript under my belt, but never got into DI there. I came to this video from your "Mocking a Database in Jest" video. If the explanation is clear there as it was here, you have my deepest gratitude and appreciation, as well as a new subscriber.

  • @ilhamkaddouri7038
    @ilhamkaddouri7038 Před 3 lety

    This is great looking forward advanced topics about testing! Thank you

  • @sheikhahnafhasan2830
    @sheikhahnafhasan2830 Před 3 lety +3

    You got a sub bro. You're awesome. Your channel will get 1M hit too soon. I hope. You've very quality content. Please, make a playlist on React testing too

  • @vesh95
    @vesh95 Před 2 lety +1

    Thanks. Спасибо! Почему-то я не догадывался строить приложение таким образом. Возможно под влиянием laravel и других фреймворков я упускал понимание работы механизмов более низкого уровня и пытался реализовать создание корневого объекта приложения во входном файле.
    Очень рад, что посмотрел данное видео)

  • @alvaro1121
    @alvaro1121 Před 2 měsíci

    Thank you and kudos! Very easy to understand, and you give a lot of great examples that can fit right into real life projects.

  • @Tozaroo
    @Tozaroo Před 2 lety +1

    this was awesome, thank you!

  • @eduardocarvalho4232
    @eduardocarvalho4232 Před 3 lety +2

    Very nice explanation.
    Thanks Sam.
    Greetings from Portugal 🤗

  • @marioserano4098
    @marioserano4098 Před 2 lety

    it was a very clear explanation, very cool!

  • @AndreaCiani
    @AndreaCiani Před 2 lety

    Great tutorial!!! Thanks!!

  • @aliasanov8790
    @aliasanov8790 Před 2 lety +1

    Great explanation! Keep it going please :-)

  • @rickvian
    @rickvian Před 3 lety +16

    great explanation just a small feedback that your music is louder than your voice and thats kind of annoying

  • @maxlupey2787
    @maxlupey2787 Před rokem

    Awsome explanation

  • @martinvanlaethem543
    @martinvanlaethem543 Před 3 lety +2

    good stuff

  • @leovvvvv
    @leovvvvv Před 3 lety +22

    Thanks for the great tutorial, Sam!
    One feedback though; the music is a bit louder than your voice, so I have to decrease the volume whenever you fast forward

  • @sammygopeh7578
    @sammygopeh7578 Před rokem

    Another amazing....THANK YOOOUU SAM!!

  • @saulramirez727
    @saulramirez727 Před 2 lety

    Great video

  • @armanabrahamyan9714
    @armanabrahamyan9714 Před 2 lety

    it is wonderful

  • @EvgenyT2011
    @EvgenyT2011 Před rokem

    Thanks!

  • @govindkumarjha2683
    @govindkumarjha2683 Před 2 lety

    Really helpfull video for me thanks from India ...

  • @alfonsoramirezelorriaga1153
    @alfonsoramirezelorriaga1153 Před 5 měsíci

    Great way to explain the pattern. Thank you! Just one question, is having all your queries to the db in a single file a good practice or a conventional practice? I just have not seen that before.

  • @jimmyfitzsimmons7170
    @jimmyfitzsimmons7170 Před 3 lety +3

    Love your work dude but the songs u play during your fastforward makes me want to throw away my headphones everytime ^^

  • @joshj.7764
    @joshj.7764 Před 6 měsíci

    Thanks for making this video! I've always liked test-driven development. But I do have a question - what's the syntax for injecting the database dependency if your routes are in another file?
    for example app.ts has:
    app.user('/api/user', userRoute); //where your post route is in userRoute.js

  • @gosnooky
    @gosnooky Před 9 měsíci

    Technically, ,if a username already exists you would use the 409 Conflict status. I know it's not germane to the tutorial, it's just a random nugget of information for anyone who builds HTTP servers. I always suggest using HTTP status semantics so consuming applications can derive the error from the calling context without having to parse the error message text, or introducing custom domain-specific error codes. Then for a specific request, the front-end say, will know that when a conflict is thrown, a user with the username already exists.

  • @gb469x
    @gb469x Před rokem +1

    Code Fastforwards :
    3:25 - database.js
    6:55 - wrapping database calls in app.js inside a function
    9:00 - passing a custom database object to the app

  • @nimser3829
    @nimser3829 Před 10 měsíci

    Super nice, thanks. How would you do if the database isn't directly used in the app, but in a router or in a controller called from that router ? I'm having a hard time trying to apply these principles to an app wired this way.

  • @learningforever2531
    @learningforever2531 Před rokem +1

    Hi,
    In case we separate the route and controller (move the route to route file, controller to controller file), how we inject database

  • @progressnwimuelekara2167

    Great explanation. Succint! Just need to reduce the volume of the music though. It'll be better if it played somewhat subtly in the background. 👍

  • @thatsalot3577
    @thatsalot3577 Před rokem

    But what if you have a lot of routes and they're stored in different files, do I have to drill down the database object to every single controller and middleware ?

  • @snake1625b
    @snake1625b Před 2 lety

    what if youre using controllers for each route, then you wouldnt be creaitng the app in each controller right?

  • @valentoMundrov
    @valentoMundrov Před 2 lety

    Greetings, thank you for the nice video (all of them), here is my question: If createApp imports a function, doesn't it executes it straight by importing it? Don't you instantiate two apps now? Isn't it better to assign your app-function into an Object and export the object, instead, so you can initiate the app from your server code?... or I'm just wrong :)
    ps. I understand the video is just basic, yet the question is for my own sake :)

  • @mertgenc9890
    @mertgenc9890 Před 2 lety +1

    hey thanks a lot for the amazing video. could you make a video about applying dependency injection to graphql server?

    • @SamMeechWard
      @SamMeechWard  Před 2 lety

      I love the suggestions. It might be a while until I do any videos with GraphQL though.

  • @alexpiano
    @alexpiano Před rokem

    NIce videos. If I may, each time you put a music I find the volume is a little too high and kinda distuptive for focusing. Anyway, I just silenced these parts. Keep up the good work.

  • @clasesutnfrc8699
    @clasesutnfrc8699 Před 2 lety

    05:32 Use Dependency Injection

  • @berkaybayrak7876
    @berkaybayrak7876 Před rokem

    I have a question, what if my requestHandlers are different file how can ı send database

  • @Sam-nm1ix
    @Sam-nm1ix Před 3 lety +2

    Did you hire a professional to select your intro songs? They're always so good.

    • @SamMeechWard
      @SamMeechWard  Před 3 lety +1

      I have an unpaid intern

    • @Sam-nm1ix
      @Sam-nm1ix Před 3 lety +1

      @@SamMeechWard you should start paying her

  • @farshadgh2011
    @farshadgh2011 Před 2 lety

    You talk, and I hear henry cavill's voice.
    great tutorial btw.

  • @tukuyoma
    @tukuyoma Před 3 lety +1

    please how do I achieve dependency injection when I have different route files and import all the routes into the index app

    • @SamMeechWard
      @SamMeechWard  Před 3 lety +2

      I hope this makes sense, i'm just going to write the code in the youtube comment
      // someRoute.js
      const express = require('express')
      export function(database) {
      const route = express.route("/something")
      route.get("/", (req, res) => {})
      return route
      }
      // app.js
      const makeSomeRoute = require('./someRoute.js')
      ....
      makeSomeRoute(database)

    • @herrklaus
      @herrklaus Před 3 lety

      @@SamMeechWard wouldn't this be express.Router?

  • @Richie43
    @Richie43 Před 2 lety

    You need to use Typescript and tsyringe

  • @babykosh5415
    @babykosh5415 Před rokem

    This (TDD) is a niche market ... no one is paying attention too....keep at it

  • @davidkhierl696
    @davidkhierl696 Před rokem

    music too loud

  • @AllanAlmeidaOficial
    @AllanAlmeidaOficial Před 11 měsíci

    Good vídeo, but please don’t put that song so loud, it’s really annoying

  • @bariswheel
    @bariswheel Před 2 lety

    Great stuff but music not my cup of tea at all, please turn it down a bit, too distracting