2011-09-27 4 views
4

J'ai une application Node.js en utilisant Express qui stocke des données dans un mongoDB (localement).Node.js - Connexion à MongoDB en utilisant MongoHQ sur Heroku

Il est maintenant poussé à heroku avec succès sur une pile de cèdre et le serveur est en cours d'exécution. J'ai ajouté l'addon mongohq à travers le terminal.

Maintenant ... comment connecter cette mongoDB via mongohq à mon application pour commencer à l'utiliser ??? Je ne vois pas de tutoriel pour cela en ligne. Si vous pouvez me diriger vers un ou me lancer sur où ajouter la configuration, j'apprécierais grandement!

Merci beaucoup.

Mise à jour:

J'ai essayé les éléments suivants (avec des valeurs réelles pour MYPASSWORD et MYDBNUMBER:

dans routes.js

var db = mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>'); 

dans mes schema.js (également essayé en utilisant le heroku

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://heroku:<MYPASSWORD>@staff.mongohq.com:10049/<MYDBNUMBER>'); 

mon pac kage.json

{ 
"name": "NAME" 
, "version": "0.0.1" 
, "dependencies": { 
    "express": "2.4.6" 
, "connect": "1.7.1" 
, "stylus": ">= 0.0.1" 
, "mongodb": ">= 0.9.6-7" 
, "mongoose": ">= 2.0.0" 
, "ejs": ">=0.4.3" 
} 
} 

À l'heure actuelle, seule la racine '/' GET est réussie. En fait, si j'essaye/page/N'IMPORTE QUOI, je peux obtenir une page d'erreur 500 rendue que j'ai faite pour gérer les tentatives d'obtenir des 'pages' qui n'ont pas été créées ... Cela me semble un peu bizarre. Tout le reste me donne une erreur de serveur interne. AUSSI, si je vais à mongohq et y ouvre ma base de données, une collection pour mes pages modèles a été créée et les index pour l'unicité ont été créés, même si je n'ai pas pu accéder aux pages pour créer ou Voir le modèle dans mon application ...

heureux de fournir d'autres informations ... si coincé.

Répondre

2

Nous utilisons heroku contre MongoHQ mais dans notre cas, nous avons créé le compte MongoHQ par nous-mêmes, donc notre solution est un peu différente. Maintenant, nous utilisons le plugin Redis et dans ce cas nous nous connectons à Redis en utilisant les variables env de heroku. Lorsque vous créez un nouveau plugin, Heroku ajoute un tas de variables d'environnement que vous pouvez accéder à partir de votre application Node.js faire facilement ceci:

process.env.NAME_OF_VAR 

Dans le cas de Redis aller le nom du var est REDISTOGO_URL de sorte que notre code ressemble

process.env.REDISTOGO_URL 

pour MongoHQ la variable env semble être MONGOHQ_URL

Vous devrez peut-être faire un peu l'analyse syntaxique. Heroku a une documentation pour Ruby ici http://devcenter.heroku.com/articles/mongohq#using_the_mongo_ruby_driver qui devrait vous aider à le faire fonctionner.

En ce qui concerne où faire cela dans une application express. Nous faisons tout l'installation sur app.js qui est notre point d'entrée dans l'application.

Espérons que cela aide.

+0

Salut merci beaucoup pour votre contribution. Je vais donner un coup de feu dans les prochains jours et faire un rapport. – tuddy

+1

Ouais, juste ne pas passer à travers avec cette chose! Y a-t-il quelque chose dont j'ai besoin d'autre que d'ajouter la variable dans mon fichier principal 'mongoose.connect (process.env.MONGOHQ_URL);' et dans le schéma 'mongoose.connect (process.env.MONGOHQ_URL);'? J'ai fait l'ajout et l'application fonctionne localement. Les journaux ne disent pas grand-chose, je suis juste en train d'obtenir des 500 quand j'essaye de faire quelque chose. Je reçois 'Internal Server Error' pour la plupart des choses, sauf certaines URLs que j'ai un message d'erreur personnalisé pour afficher cette vue personnalisée 500 ... donc c'est un peu travailler, je suis sûr que c'est juste pas accéder à la DB. – tuddy

+0

Ok, à peu près sûr que c'est un truc de route, on dirait que je peux accéder à la DB en fait. Cette réponse a aidé. Merci. – tuddy

Questions connexes