Express.js와 MongoLab을 사용하고 있는데이 코드를 Heroku setup to get MongoDB working에 던져서이 코드를 내 app.js에 던집니다. 이 인덱스 페이지에 새 양식을 렌더링하고 나 로컬에 저장할 수 있지만MongoLab에서 Heroku의 MongoDB 데이터베이스를 어떻게 설정합니까?
//Routes
app.get('/', function(req, res) {
res.render('index', {
title: 'DumbyApp'
});
});
//save new email
app.post('/', function(req, res){
emailProvider.save({
address: req.param('address')
}, function(error, docs) {
res.redirect('/')
});
});
:
//Mongo on Heroku Setup
var mongo = require('mongodb');
var mongoUri = process.env.MONGOLAB_URI ||
process.env.MONGOHQ_URL ||
'mongodb://localhost/mydb';
mongo.Db.connect(mongoUri, function (err, db) {
db.collection('mydocs', function(er, collection) {
collection.insert({'mykey': 'myvalue'}, {safe: true}, function(er,rs) {
});
});
});
나는 (또한 app.js에서) 내 이메일 양식에 대한 다음과 같은 경로 및 필드가 이메일 수집을 설정하는 방법을 모르기 때문에 프로덕션 환경에 있지 않습니다. 아무도 이것을 통해 나를 걸을 수 있습니까? MongoDB와 Node.js를 사용하는 것에 새로운 브랜드이기 때문에 약간의 도움을받을 수 있습니다.
는 편집 : MongoLab 데이터베이스 인터페이스에서
, 나는collection
가
emails
라고했다. 이것이 올바른 행동의 과정입니까?
편집 2 : 여기
은 파일 자체와 함께 app.js에 EmailProvider을 정의합니다.
는 app.js
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, EmailProvider = require('./emailprovider').EmailProvider;
var emailProvider= new EmailProvider('localhost', 27017);
emailprovider.js 제 코드 박스의 연결 코드가 올바른 것으로 나타나는 반면, emailProvider 객체를 사용하지
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var BSON = require('mongodb').BSON;
var ObjectID = require('mongodb').ObjectID;
EmailProvider = function(host, port) {
this.db= new Db('localdb', new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
this.db.open(function(){});
};
EmailProvider.prototype.getCollection= function(callback) {
this.db.collection('emails', function(error, email_collection) {
if(error) callback(error);
else callback(null, email_collection);
});
};
//save new email
EmailProvider.prototype.save = function(emails, callback) {
this.getCollection(function(error, email_collection) {
if(error) callback(error)
else {
if(typeof(emails.address)=="undefined")
emails = [emails];
for(var i =0;i< emails.address;i++) {
email = emails[i];
email.created_at = new Date();
}
email_collection.insert(emails, function() {
callback(null, emails);
});
}
});
};
exports.EmailProvider = EmailProvider;
안녕하세요! 일부 문맥이 누락 된 것 같습니다. MongoDB 연결 코드는 괜찮아 보이지만 emailProvider의 정의는 무엇입니까? – robert
@robert 좋아, 어떻게 진행되고 있는지 더 잘 이해할 수 있도록 편집했습니다. – Jryl
EmailProvider가 localhost : 27017에 연결하고 있음을 올바르게 읽고 있습니까? 대신 MongoLab 데이터베이스에 연결하려고합니까? – robert