sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik mijn eigen Parse Server op Heroku hosten met MongoDB?

Self-hosting Parse Server op Heroku

Heroku, MongoDB en Parse instellen

  1. Bezoek https://signup.heroku.com/ en meld u aan voor een account
  2. Verifieer uw e-mailadres en log in op Heroku
  3. Ga naar Een parse-server implementeren in Heroku
  4. Klik op "Deploy to Heroku"

  1. Geef je parseerserver een naam
  2. Sla de APP_ID en MASTER_KEY van de app voor nu over, dat stellen we in een latere stap in.
  3. Klik op "Gratis implementeren"

  1. Als het onderstaande vak verschijnt, voert u uw creditcardgegevens in om uw account te verifiëren. Maak je geen zorgen, er worden geen kosten in rekening gebracht, tenzij je je account later upgradet . Dit is gewoon een beveiligingsmaatregel die Heroku heeft genomen om misbruik te voorkomen.

  1. Heroku maakt je app. Op de achtergrond zal het ook een .git-repo voor je maken en de inhoud van de officiële parse-server-example git-repo klonen, een MongoDB-database maken en je Heroku-app configureren om die DB te gebruiken.
  2. Wanneer de app is gemaakt, wordt u naar het Heroku-dashboard geleid of u kunt er komen door in te loggen, op "Persoonlijke apps" te klikken en vervolgens op de naam van uw parse-server te klikken
  3. Klik op het dashboard van uw app op 'Instellingen' en vervolgens op 'Configuratievariabelen onthullen'

  1. Vul de APP_ID en MASTER_KEY van uw app in. Als je nu een app op Parse.com hebt, kun je dezelfde sleutels gebruiken die het gebruikt. U kunt de op https://www.parse.com/apps/<APP_NAME>/edit#keys waar <APP_NAME> is de naam van uw app. Als u een nieuwe app maakt, kunt u hier willekeurige sleutels genereren. Je kunt nieuwe sleutels toevoegen voor elke sdk die je wilt gebruiken, ik voeg er hier een toe voor de javascript sdk.

  1. Noteer de waarde voor MONGOLAB_URI, u hebt deze later nodig als u uw bestaande Parse-gegevens naar uw nieuwe DB wilt migreren
  2. Scroll naar beneden en noteer de Git-url en het Heroku-domein voor je app, deze heb je later nodig

  1. Installeer de Heroku Toolbelt, een opdrachtregelinterfacetool voor het beheren van uw Heroku-apps.

  2. Open een terminalprompt en voer $ heroku login . in , voer je Heroku-e-mailadres en wachtwoord in

  3. Voer $ heroku git:clone -a <MY_APP_NAME> in (waar <MY_APP_NAME> is de naam van je heroku-app) om een ​​lokale kopie van je servercode-repo te maken, kun je ook de git-url gebruiken die we eerder hebben gezien. Wanneer u de repository kloont, ziet u het bericht "waarschuwing:u lijkt een lege repository te hebben gekloond". De app-map wordt gemaakt, maar bevat alleen de standaard git-bestanden en geen parse-server. Om dit op te lossen. Ga naar de officiële parse-server-example git repo, download het zip-bestand van de repo. Pak de map uit, sleep alle bestanden en mappen van de map parse-server-example-master naar uw app-map.

  4. Terug in de terminal, voer $ cd <MY_APP_NAME> . in om naar de repo te gaan

Schakel CORS in (zodat u de API van andere domeinen kunt gebruiken)

  1. Zoek en open op uw harde schijf de lokale kopie van de repo die we zojuist hebben gemaakt
  2. Open in de map package.json en voeg "cors": "*" . toe naar de dependencies zoals dit:

.

  "dependencies": {
    "express": "~4.2.x",
    "kerberos": "~0.0.x",
    "parse": "~1.6.12",
    "parse-server": "~2.0",    // <= don't forget this comma
    "cors": "*"                // add this line
  }

OPMERKING

Zorg ervoor dat u de bovenstaande opmerkingen in uw daadwerkelijke code verwijdert, aangezien het geen geldige JSON is

  1. Open index.js en breng deze wijzigingen aan:

.

var express = require('express');  // find this line in the file
var cors = require('cors') // add this line below it

//....


//var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI // old name, you may need to change this for new deployments
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI  // changed to MONGODB_URI in Heroku!

//....

var app = express();  // find this line in the file
app.use(cors()); // add this line below it

//Add declarations for any keys you plan to use as shown below
var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '',
  serverURL: process.env.SERVER_URL || 'http://localhost:1337',
  javascriptKey: process.env.JAVASCRIPT_KEY || '',  //** add this line no need to set values, they will be overwritten by heroku config vars
  restAPIKey: process.env.REST_API_KEY || '', //** add this line
  dotNetKey: process.env.DOT_NET_KEY || '', //** add this line
  clientKey: process.env.CLIENT_KEY || '', //** add this line
});
  1. Ga terug naar het terminalvenster, zorg ervoor dat je nog steeds in de map bent van de repo die we hebben gekloond en voer het onderstaande in om de wijzigingen naar Heroku te pushen:

.

$ git add .
$ git commit -am "make it better"
$ git push heroku master

Test uw nieuwe Parse Server

  1. Ga naar deze jsFiddle-pagina
  2. Wijzig <MY_APP_ID> ,<MY_JS_KEY> ,<MY_HEROKU_APP_NAME> in de viool naar de juiste waarden voor uw app en klik vervolgens op "Uitvoeren"

.

Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
  1. U zou de onderstaande melding moeten krijgen om u te laten weten dat uw nieuwe Parse-server correct werkt

OPMERKING:

Als u de jsfiddle-tool gebruikt met meerdere parse-serverinstanties, krijgt u mogelijk de foutmelding "ongeldige sessietoken". Als dit gebeurt, open dan de dev-console en verwijder alle "parse"-sleutels uit de lokale opslag, daarna zou het moeten werken:

Uw bestaande gegevens migreren vanuit Parse

Doe dit minimaal één keer met een test-app voordat u een productie-app migreert. Het lijkt er ook op dat verouderde files vanuit je oude app kan nog niet worden overgedragen, zie dit GitHub-probleem

  1. Voordat we migreren , als uw nieuwe MongoDB gegevens bevat, zal de migratie mislukken. Als je zojuist de server hebt getest en hebt gemaakt en object hebt gemaakt, ga je naar https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources , klik op "MongoLab" naast het pictogram en klik vervolgens op de volgende pagina op "Verwijder alle collecties"
  2. Ga naar https://dashboard.parse.com/apps/<APP_NAME>/settings/general waar <APP_NAME> is de naam van je parse app
  3. Scroll naar beneden op de pagina en klik op "Migreren"
  4. Voer in het modale, in het grijze gebied (dat niet veel op een invoer lijkt...) de MONGOLAB_URI in die we eerder hebben genoteerd
  5. Klik op "Begin met de migratie"

  1. Wanneer de migratie is voltooid, klikt u op "Voltooien" en vervolgens in de pop-up op "Oké" wanneer de migratie definitief is, al uw gegevens staan ​​in uw nieuwe MongoDB-database.

  1. Voorlopig blijft je Parse-dashboard je gegevens tonen die nu in de nieuwe DB staan. Om alles te testen, ga terug naar de test jsFiddle die we eerder hebben gebruikt en voer het opnieuw uit. Ga nu naar je Parse-dashboard en je zou de nieuw toegevoegde klasse en rij moeten zien. Opmerking dat toen ik het nieuwe Parse-dashboard gebruikte, ik het aantal rijen kon zien, maar het rijgebied was helemaal leeg. Ik keerde terug naar het oude Parse-dashboard en kon alles goed zien.



  1. Spring Data MongoDB – Indexen, annotaties en converters

  2. $redis globale variabele met robijn op rails

  3. Vermijd huidige URL-tekenreeksparser is verouderde waarschuwing door useNewUrlParser in te stellen op true

  4. MongoDB - Trek meerdere objecten uit een array