Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1552
Driver og utvikler en node-app som jeg ønsker å kjøre på heroku. For å gjøre utviklingen enklest mulig hadde det vært fint å kunne kjøre opp applikasjonen med sqlite3 lokalt - og bruke postgres når den kjører på heroku.

Problemet jeg møter er at pg og sqlite3 har ikke helt likt API - så regner med jeg trenger et abstraksjonsnivå mellom applikasjonen og rammeverket jeg benytter for å kjøre spørringer til databasen. Men sliter litt med å finne et god modul for akkurat dette.

Noen som har vært borti lignende problemstilling, og funnet noen gode løsninger?
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Hvorfor vil du egentlig bruke SQLite lokalt? Er Postgres et herk å sette opp eller noe, eller er det en annen grunn?

Det blir sannsynligvis litt vanskelig å finne en generisk modul som gir deg noen spesiell verdi i denne situasjonen. Hva tenkte du at denne skulle bidra med?
Ukjent
Trådstarter Donor
Mest fordi jeg utvikler på ulike maskiner - og da er jeg plutselig avhengig av å sette opp postgres på alle maskinene. Betyr også at om folk vil bidra på prosjektet så er jeg plutselig avhengig av at de installerer en postgres-server.

Så i praksis er det jeg ønsker å ha mulighet for å ha en sqlserver som er lett å bare fyre opp - og som ikke krevet at folk installerer noe ekstra software. Det må ikke være SQLite, så lenge det er like enkelt. Ønsker at man som utvikler skal kunne skrive "npm install && npm start" og så skal alt fungere, noe som går fint med SQLite.

Problemet er bare at heroku kun støtter postgres, så må da også ha mulighet til å endre til å bruke dette når jeg faktisk deployer applikasjonen.

Så i praksis trenger det ikke være noe mer avansert enn en modul som drar inn riktig engine - og så har en abstraksjon som gjør at jeg kan skriver spørringer uten å tenke så veldig på hvilken database som ligger bak. Selvfølgelig er jeg da avhengig av å bruke syntax som er støttet av begge motorene.

Om det finnes andre, bedre løsninger, som gjør det like lett å komme i gang med utvikling på en ny maskin. Så vil nok det fungere akkurat like bra.
Sist endret av etse; 15. november 2015 kl. 19:55.
Jeg kan fint lite om Node, men den samme database-problemstillingen finnes jo i andre språk også.

Hovedsaklig ser jeg to fremgangsmåter:

1. Bruke et eller annet ORM-bibliotek som støtter både sqlite og postgres
+ du kan bruke både postgres og sqlite
+ du slipper skrive sql og kan heller håndtere objekter
- det skjer fort at du har behov for noe som utviklerne av ORM-biblioteket ikke har tenkt på, og da er du enten fucked eller i "dirty hack country"

2. bruke samme databasemotor både til utvikling, test og produksjonsmiljø
+ du kan gjøre ting akkurat som du vil
- du må bruke tid på å skrive kode for automatisk oppsett av miljø. Om det er docker, Vagrant eller noe annet er underordnet, men du må vedlikeholde det også
- brukere må ha tredjepartprogramvare installert

Eller, så kan du selvfølgelig bare dra opp en VM med postgres lokalt, men jeg syns det er en passe skitten løsning som vil straffe seg om du har lagt bort prosjektet i et halvår og så må utvikle noe mer (eller andre skal kunne bidra til samme prosjekt)
Sist endret av liasis; 15. november 2015 kl. 19:56.
Vil anbefale deg å sjekke ut Docker https://www.docker.com som er laget for å løse akkurat det problemet du her beskriver. Å kjøre postgres lokalt har aldri vært enkere

Se forøvrig også denne: https://devcenter.heroku.com/articles/docker
Sist endret av neurotor; 16. november 2015 kl. 12:34.
Du kan prøve Sequelize. Har tidligere brukt det med MySQL som databasemotor (på Heroku via ClearDB), med SQLite som in-memory database for unit-tests (støtter også lagring til fil med SQLite). Nå er det nesten et år siden jeg brukte det sist, men da synes jeg det var noe knotete å jobbe med, men YMMV.
Ukjent
Trådstarter Donor
For min del ble det mer aktuelt å bare bruke postgres på utviklingsmaskinene. Ønsket ikke å ta i bruk en ORM - da det er en abstraksjon som ikke bidrar med innenfor de tingene jeg skal lage. Tenker å kanskje ta en tid på Vagrant etterhvert for å gjøre det lettere for folk å komme i gang.
Sitat av etse Vis innlegg
For min del ble det mer aktuelt å bare bruke postgres på utviklingsmaskinene. Ønsket ikke å ta i bruk en ORM - da det er en abstraksjon som ikke bidrar med innenfor de tingene jeg skal lage. Tenker å kanskje ta en tid på Vagrant etterhvert for å gjøre det lettere for folk å komme i gang.
Vis hele sitatet...
Vagrant var relativt enkelt å sette opp for meg. Jeg slet litt med ytelse though, men det er mest sannsynlig grunnet i dårlig hardware/ev. feil i mitt oppsett.