Ska det vara så svårt att skapa en enkel backend?

Permalänk
Medlem

Ska det vara så svårt att skapa en enkel backend?

Halloj,
har ett fritidsprojekt jag hade velat komma igång med men håller på att tappa allt mitt självförtroende i jakten på en backend. Jag bestämde mig för att testa Nest.js men jag lyckas inte riktigt få ihop det och tycker det är orimligt komplicerat. Det är oklart vad som faktiskt behövs (service, module, dto, schema, controller...) Börjar slita mig i håret över att jag ej förstår och det grämer mig något otroligt. Tittade lite snabbt på Express.js nu som såg väldigt mycket simplare ut men tänkte kolla med er. Känner ni er också dumma i huvudet när ni tar er ann nya programmeringsspråk/tekniker? Har ni några tips i området?

Vad jag försöker göra:
Frontend som kör Vue som ska sköta tidsregistreringar. Vi ska kunna ha (om vi tänker oss traditionella SQL-tables) Employees, timeregistrations & events. Jag vill kunna köra CRUD-operationer till ett lokalt hostat REST-api. Jag vill alltså ha ett så simpelt REST-api som möjligt med autentisering. Har hört att MongoDB är det nya heta men har lite svårt att förstå icke-relationsdatabaser, det går emot allt vad jag kan men försöker lära mig.

Jag är inte så dum i huvudet som jag kanske låter. Jag har en femårig civilingenjörsexamen inom datateknik samt ett års arbetslivserfarenhet inom just frontendutveckling. Därav knäcker det ens självförtroende rejält att inte ens klara av det här.

disclaimer
Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk
Medlem

Är numera utvecklare, med några års arbetslivserfarenhet.
Upplevelsen i sig är du inte ensam om. Jag mindes hur jobbigt det var under första året. Deet finns även seniorer som kan INGENTING.

Förstå, praktisera och debugga, är mitt bästa tips. Är det ingenting som fungerar då har du inte förstått.

Lycka till!

Permalänk
Medlem

Jag och några kollegor byggde en backend i Typescript/Node.js + "MongoDB" förra året. Jag hade aldrig pysslat med något av detta förut och det fungerar helt OK, driftas i Azure App Services och med CosmosDBs Mongo-kompatibla API.

Express för API, Mongoose för MongoDB-kompatibel databaaccess och Bree för att köra schemalagda jobb. Relativt simpelt att komma igång med är min uppfattning, även om jag inte satte upp grunderna -- däremot har jag skrivit majoriteten av koden.

Vår frontend är ett SaaS-CMS, så vi använder det systemets rätt speciella autentiserings-mekanismer, så på det området har jag inga som helst tips.

Citat:

service, module, dto, schema, controller

Det låter som om du inte har skrivit någon REST-baserad backend förut? Koncepten är ju rätt så lika oberoende språk och ramverk.

Om det är ett fritidsprojekt är det ju bara att börja smått och sedan bygga på efter hand. Min uppfattning är att det finns massor av Typescript+Node+Express+Mongo-tutorials och att de är relativt enkla att köra, även för någon som mig som inte egentligen kan TypeScript.

Edit:

Citat:

lite svårt att förstå icke-relationsdatabaser

Jag hanterar i alla fall det på följande vis: Tänk relationsdatabas (datamodelleringsmässigt) minus de faktiska constraintsen för FK. FK finns där, men utan att implementeras tekniskt. Riktiga JOIN? Nej.

Permalänk
Medlem
Skrivet av Pelegrino:

Halloj,
har ett fritidsprojekt jag hade velat komma igång med men håller på att tappa allt mitt självförtroende i jakten på en backend. Jag bestämde mig för att testa Nest.js men jag lyckas inte riktigt få ihop det och tycker det är orimligt komplicerat. Det är oklart vad som faktiskt behövs (service, module, dto, schema, controller...) Börjar slita mig i håret över att jag ej förstår och det grämer mig något otroligt. Tittade lite snabbt på Express.js nu som såg väldigt mycket simplare ut men tänkte kolla med er. Känner ni er också dumma i huvudet när ni tar er ann nya programmeringsspråk/tekniker? Har ni några tips i området?

Vad jag försöker göra:
Frontend som kör Vue som ska sköta tidsregistreringar. Vi ska kunna ha (om vi tänker oss traditionella SQL-tables) Employees, timeregistrations & events. Jag vill kunna köra CRUD-operationer till ett lokalt hostat REST-api. Jag vill alltså ha ett så simpelt REST-api som möjligt med autentisering. Har hört att MongoDB är det nya heta men har lite svårt att förstå icke-relationsdatabaser, det går emot allt vad jag kan men försöker lära mig.

Jag är inte så dum i huvudet som jag kanske låter. Jag har en femårig civilingenjörsexamen inom datateknik samt ett års arbetslivserfarenhet inom just frontendutveckling. Därav knäcker det ens självförtroende rejält att inte ens klara av det här.

disclaimer

MongoDB är väl främst hett på YouTube (evigt tjat om MERN-stack) men verkar inte användas så mycket i "verkligheten" vad jag förstått.

Med express kan du mycket riktigt slänga ihop ett enkelt REST-API men gör inte som i valfri tutorial och släng allt i en fil utan gör åtminstone ett par lager (routes, serrvices eller dyl).

Nest.js har hämtat mycket inspiration ifrån .NET och Java, därav klasser och lite mer verbose.
När jag körde node.js byggde jag ett eget litet Nest.js fast mer avskalat då. 🙂

Permalänk
Medlem

C# med Entity Framework hade jag lärt mig om jag var du. Du kan köra på "code first" dvs skapa klasser i C# och så kommer EF skapa upp databasen. Väldigt vanligt ute i arbetslivet och trevligt att arbeta med. https://learn.microsoft.com/en-us/ef/ef6/modeling/code-first/...

Går även automatiskt generera upp DTO:er (väldigt trevligt när man kör t.ex. TypeScript) och Zod-scheman för validering baserat på Swagger.

Controller / Service / Repository kommer du stöta på oavsett ramverk, jag kommer själv ihåg att detta var otroligt krångligt att förstå i början. Nu fattar jag inte varför jag tyckte det var så svårt att greppa helt plötsligt. Här nedan kommer en extremt enkel beskrivning.

Controllern - väldigt "ren", har egentligen bara en funktionalitet, att hantera API-anrop och delegera vidare till servicen.

Service - hanterar all business logic och delegerar vidare till en eller flera repo-metoder för att "sy ihop" den datan som utlovas i controllern.

Repository - också väldigt "ren", sköter alla CRUD-operationer direkt mot databasen och inte så mycket mer.

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem

Kan tips om python-eve som är en konfigurerbar backend service som är integrerad mot MongoDB men fungerar även mot SQL.

Permalänk
Medlem
Skrivet av ortzon:

Är numera utvecklare, med några års arbetslivserfarenhet.
Upplevelsen i sig är du inte ensam om. Jag mindes hur jobbigt det var under första året. Deet finns även seniorer som kan INGENTING.

Förstå, praktisera och debugga, är mitt bästa tips. Är det ingenting som fungerar då har du inte förstått.

Lycka till!

Imposter-syndrome spökar rejält! Skönt att höra att man ej är ensam.

Skrivet av KAD:

Det låter som om du inte har skrivit någon REST-baserad backend förut? Koncepten är ju rätt så lika oberoende språk och ramverk.

Nja det är väl 8 år sedan sist. Problemet jag försökte upplysa var det faktum att det inte är strukturerat vad du behöver; ibland vill du ha allt, ibland ej. Men det är det jag har läst som en av nackdelarna med just nest.js, att det ej finns en klar, fördefinierad struktur utan det är mer flytande (vilket givetvis kan vara en fördel).

Skrivet av ChrisDev:

MongoDB är väl främst hett på YouTube (evigt tjat om MERN-stack) men verkar inte användas så mycket i "verkligheten" vad jag förstått.

Med express kan du mycket riktigt slänga ihop ett enkelt REST-API men gör inte som i valfri tutorial och släng allt i en fil utan gör åtminstone ett par lager (routes, serrvices eller dyl).

Nest.js har hämtat mycket inspiration ifrån .NET och Java, därav klasser och lite mer verbose.
När jag körde node.js byggde jag ett eget litet Nest.js fast mer avskalat då. 🙂

Nej precis, nämns hela tiden. Var också faktiskt en kollega som tipsade om det. Men kanske håller mig till SQLite bara för simpelhetens skull. Tar mig nog en titt på Express igen.

Skrivet av kwame:

C# med Entity Framework hade jag lärt mig om jag var du. Du kan köra på "code first" dvs skapa klasser i C# och så kommer EF skapa upp databasen. Väldigt vanligt ute i arbetslivet och trevligt att arbeta med. https://learn.microsoft.com/en-us/ef/ef6/modeling/code-first/...

Går även automatiskt generera upp DTO:er (väldigt trevligt när man kör t.ex. TypeScript) och Zod-scheman för validering baserat på Swagger.

Controller / Service / Repository kommer du stöta på oavsett ramverk, jag kommer själv ihåg att detta var otroligt krångligt att förstå i början. Nu fattar jag inte varför jag tyckte det var så svårt att greppa helt plötsligt. Här nedan kommer en extremt enkel beskrivning.

Controllern - väldigt "ren", har egentligen bara en funktionalitet, att hantera API-anrop och delegera vidare till servicen.

Service - hanterar all business logic och delegerar vidare till en eller flera repo-metoder för att "sy ihop" den datan som utlovas i controllern.

Repository - också väldigt "ren", sköter alla CRUD-operationer direkt mot databasen och inte så mycket mer.

Tack för tipset, ska ta mig en titt! C# har jag en hel del erfarenhet i men det var ett tag sen.

Skrivet av orp:

Kan tips om python-eve som är en konfigurerbar backend service som är integrerad mot MongoDB men fungerar även mot SQL.

Tack så mycket Kul med så många olika svar! Har en polare som är ren backendutvecklare som lovat att ta en demo med bl.a spring boot.

Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk
Medlem

Be Chatgpt om exempel och förklaringar, oslagbart.

Visa signatur

Dator: Intel Core 2 Duo E6750@3.2Ghz 2 GB DDR2 6400, 320GB HD, ATI HD3850 256MB, 22" Mirai TFT.
Laptop: Lenovo S10E.

Permalänk
Medlem

Vad jag ser så verkar nestjs vara något slags backend med färdig infrastruktur.
Istället för att sätta upp all routing själv så skapar du controllers som får egna routes och allt som behövs out of the box.
Vill man då förstå allt som händer under huven så blir det ju jobbigare för en än om man hade gjort allt manuellt i expressjs.

Vill du slippa bry dig om din backend så mycket så kan jag tipsa om en headless cms som är väldigt populär och enkel att komma igång med.
https://strapi.io/

Permalänk
Medlem

Vild gissning men kan det vara så att du försöker göra för mycket samtidigt? Det vill säga t.ex du vill skriva till din databas som en autentiserad användare, och det gör att det blir för mycket att lära sig samtidigt.

När jag får den kännslan så brukar det vara precis så, och det som hjälper är att bryta ned det i super enkla delar.
T.ex.
- statisk sida
- skicka data till sidan
- läs data från sidan
- statisk sida med autentisering
- skicka data med autentisering
- autetisera för att läsa data
- skicka data till databasen
- läs data från databasen
Osv...

Permalänk
Medlem
Skrivet av Peter233:

Be Chatgpt om exempel och förklaringar, oslagbart.

Håller med om detta, framförallt när det kommer till att komma igång, ju mer komplex koden blir desto sämre hjälp får man av chatGPT men just att komma till en hello world i valfritt verktyg är den väldigt bra på att förklara.

Permalänk

Mitt tips är som en annan sa: dela in det i mindre bitar och få en bit att fungera först:

- Få till att en HTML-sida som kan inkludera JS- + CSS-kod att fungera (kan du göra detta så kan du börja fila på JS-koden) och kan visas i localhost och/eller där den ska publiceras sedan

- Etablera databasanslutning (detta behövs ju för alla anrop mot databas)

- Läsa redan inlagd data (kan du göra detta så kan du även läsa data du lägger in sedan)

- Skriva in inlagd data (kan du göra detta så kan du också nog uppdatera och radera data med minimala kodändringar)

- Ändra/Radera data (kan du göra detta så har du uppnått CRUD)

- Skapa simpel REST API som gör allt ovanstående, men börja med en sak i taget: få REST API:et att ansluta till databas och bara läsa ut data så den returnerar en JSON som du sedan kan läsa in/skriva ut på din webbplats (kan du göra detta så blir det i princip upprepade steg ovan fast du ändrar HTTP metod till POST/PUT/DELETE för 'INSERT', 'UPDATE', 'DELETE' om vi antar MySQL/MariaDB)

- Utöka REST API:et med att bara ta en sträng som JSON från din webbplats som sedan läggs in i databasen (kan du göra detta så blir det rätt lika för UPDATE & DELETE i databasen, fetch-anropet får annan metod och du skickar med JSON på samma vis i body)

Nu i efterhand inser jag att databas-stegen är ju relaterade till REST API då du behöver en särskild miljö för att göra databasanrop direkt via JS. Antar att axios kan tilämpas här?

Har jag sagt något tokigt nu så får mer erfarna gärna rätta mig så jag också lär mig!

Skrivet av ortzon:

Är numera utvecklare, med några års arbetslivserfarenhet.
Upplevelsen i sig är du inte ensam om. Jag mindes hur jobbigt det var under första året. Deet finns även seniorer som kan INGENTING.

Förstå, praktisera och debugga, är mitt bästa tips. Är det ingenting som fungerar då har du inte förstått.

Lycka till!

Vem eller vilka kallar sådana personer för "seniorer" och hur kan de fortfarande behålla sina "seniorpositioner"?

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>

Permalänk
Medlem
Skrivet av Peter233:

Be Chatgpt om exempel och förklaringar, oslagbart.

chatGPT funkar ibland. I just detta fallet har den gett mig exempel som uppenbarligen saknar info osv. Tidigare idag har jag bett den om hjälp med att migrera från Vue 2 till Vue 3 och den har gett mig helt felaktig information också. Så man ska vara försiktig när man använder chatGPT.

Skrivet av swesen:

Vild gissning men kan det vara så att du försöker göra för mycket samtidigt? Det vill säga t.ex du vill skriva till din databas som en autentiserad användare, och det gör att det blir för mycket att lära sig samtidigt.

När jag får den kännslan så brukar det vara precis så, och det som hjälper är att bryta ned det i super enkla delar.
T.ex.
- statisk sida
- skicka data till sidan
- läs data från sidan
- statisk sida med autentisering
- skicka data med autentisering
- autetisera för att läsa data
- skicka data till databasen
- läs data från databasen
Osv...

Nja inte nödvändigtvis. Men sitter med Express.js nu och herrejesus vad mycket lättare det är. Kan till och med serva mig själv enkelt med en statisk sida att testa alla operations på. Blir att leka mer med det senare. Behöver inte vara så jävla krångligt som med Nest.

Skrivet av Hejss:

Håller med om detta, framförallt när det kommer till att komma igång, ju mer komplex koden blir desto sämre hjälp får man av chatGPT men just att komma till en hello world i valfritt verktyg är den väldigt bra på att förklara.

Se svar ovan. Känner att det varierar. Men håller helt med dig om att när komplexiteten ökar går det utför.

Skrivet av WebbkodsLärlingen:

Mitt tips är som en annan sa: dela in det i mindre bitar och få en bit att fungera först:

- Få till att en HTML-sida som kan inkludera JS- + CSS-kod att fungera (kan du göra detta så kan du börja fila på JS-koden) och kan visas i localhost och/eller där den ska publiceras sedan

- Etablera databasanslutning (detta behövs ju för alla anrop mot databas)

- Läsa redan inlagd data (kan du göra detta så kan du även läsa data du lägger in sedan)

- Skriva in inlagd data (kan du göra detta så kan du också nog uppdatera och radera data med minimala kodändringar)

- Ändra/Radera data (kan du göra detta så har du uppnått CRUD)

- Skapa simpel REST API som gör allt ovanstående, men börja med en sak i taget: få REST API:et att ansluta till databas och bara läsa ut data så den returnerar en JSON som du sedan kan läsa in/skriva ut på din webbplats (kan du göra detta så blir det i princip upprepade steg ovan fast du ändrar HTTP metod till POST/PUT/DELETE för 'INSERT', 'UPDATE', 'DELETE' om vi antar MySQL/MariaDB)

- Utöka REST API:et med att bara ta en sträng som JSON från din webbplats som sedan läggs in i databasen (kan du göra detta så blir det rätt lika för UPDATE & DELETE i databasen, fetch-anropet får annan metod och du skickar med JSON på samma vis i body)

Nu i efterhand inser jag att databas-stegen är ju relaterade till REST API då du behöver en särskild miljö för att göra databasanrop direkt via JS. Antar att axios kan tilämpas här?

Har jag sagt något tokigt nu så får mer erfarna gärna rätta mig så jag också lär mig!

Det du säger är inte fel men det är väldigt väldigt basic steg den större delen Men tror det viktigaste är som du säger att ta det i steg. Kommer dock nog röra mig till SQL igen istället för MongoDB därför att det är det jag kan och det är väldigt simpelt. Tack för tipset med MariaDB, har kört en del SQLite tidigare som också funkat bra.

Citat:

Vem eller vilka kallar sådana personer för "seniorer" och hur kan de fortfarande behålla sina "seniorpositioner"?

Mvh,
WKL.

Troligtvis deras arbetsgivare. Kunskap är ofta specifik så medan som man är sjukt duktig på en grej så är man sämre på annan. Tar mig själv som exempel som är väldigt duktig på webbutveckling men jag kan inte backend öht, därav att jag strugglar just nu.

Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk
Skrivet av Pelegrino:

Det du säger är inte fel men det är väldigt väldigt basic steg den större delen Men tror det viktigaste är som du säger att ta det i steg. Kommer dock nog röra mig till SQL igen istället för MongoDB därför att det är det jag kan och det är väldigt simpelt. Tack för tipset med MariaDB, har kört en del SQLite tidigare som också funkat bra.
Troligtvis deras arbetsgivare. Kunskap är ofta specifik så medan som man är sjukt duktig på en grej så är man sämre på annan. Tar mig själv som exempel som är väldigt duktig på webbutveckling men jag kan inte backend öht, därav att jag strugglar just nu.

Jå, är det inte också det som ska göras om än med mer "boilerplate" i NestJS vilket är det som gör det överkomplicerat?

Själv upplever jag det motsatta: frontend (designbiten) är svårare än backend (logik) för min del!

Mvh,
WKL.

Visa signatur

<WKL:"En kodrad i taget!";/>

Permalänk
Avstängd

MongoDB gillar jag faktiskt, trots att det gjort mina rätt omfattande SQL-kunskaper värdelösa på mitt jobb.

Men den här grejen att bygga backend i JS (eller TS) känner jag är lite onödigt jobbigt. JS funkar för frontend, hjälpligt, men man använder det ju inte för att det är så trevligt att jobba med direkt utan mer för att det är det enda som duger. Backend kan man bygga i vanliga programmeringsspråk så varför inte göra det?

Permalänk
Medlem
Skrivet av snajk:

Men den här grejen att bygga backend i JS (eller TS) känner jag är lite onödigt jobbigt. JS funkar för frontend, hjälpligt, men man använder det ju inte för att det är så trevligt att jobba med direkt utan mer för att det är det enda som duger. Backend kan man bygga i vanliga programmeringsspråk så varför inte göra det?

NodeJS är väl etablerat ändå tänker jag. Personligen föredrar jag .NET för backend-utveckling men det är ju högst subjektivt.

Permalänk
Avstängd
Skrivet av Curik:

NodeJS är väl etablerat ändå tänker jag. Personligen föredrar jag .NET för backend-utveckling men det är ju högst subjektivt.

Jo, kommer man från frontend-sidan så är det väl trevligt att kunna bygga backend med ens kunskaper, men för mig så känns det extremt krångligt och komplicerat.

Permalänk
Medlem

En nackdel en del ser med node (bortsett att det är JS då) är att det inte finns några direkta riktlinjer eller mönster att följa. Lite som React vs Angular: gör hur du vill, vi bryr oss inte. Detta medför väl att alla projekt ser ganska olika ut och särskilt frontend är väl lite ökänt för att vara vilda västern medan .NET och Java är mer moget och är väl sannolikt vettigare för stora projekt/team. Nu är jag inte speciellt erfaren i riktiga projekt än så detta är vad jag antar. Föredrar definitiv .NET framför node hur som helst.

Nest.js är väl mer tänkt som "node för enterprise" och är starkt influerat av ovan nämnda plattformar/tekniker med DI, repositories etc medan många som kör node slänger alltihop i app.js och filen blir en mardröm 😁