2014-02-04 6 views
0

У меня есть основные проблемы, связанные с моей базой данных mongohq. Я после этого учебника, но замена локального Монго DB с удаленным MongoHQ дб: http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/узел и удаленное соединение mongohq

wines.js

var mongo = require('mongodb'); 
Db = mongo.Db; 
BSON = mongo.BSONPure; 
con = null; 

server = new Server('troup.mongohq.com', 'mongo_port', {auto_reconnect: true}); 
DBCon = new Db('dev', server, {safe: false}); 
DBCon.open(function(err, db) { 
    if(!err) { 
    db.authenticate('username', 'password', function(err){ 
    if(!err) con = db; 
    }) 
    } 
}) 

// exports.findById = function(req, res) { 
//  var id = req.params.id; 
//  console.log('Retrieving wine: ' + id); 
//  db.collection('wines', function(err, collection) { 
//   collection.findOne({'_id':new BSON.ObjectID(id)}, function(err, item) { 
//    res.send(item); 
//   }); 
//  }); 
// }; 

server.js

var express = require('express'), 
path = require('path'), 
http = require('http'), 
wine = require('./routes/wines'); 

var app = express(); 

app.configure(function() { 
app.set('port', process.env.PORT || 3000); 
app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */ 
app.use(express.bodyParser()), 
app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.get('/wines', wine.findAll); 
app.get('/wines/:id', wine.findById); 
app.post('/wines', wine.addWine); 
app.put('/wines/:id', wine.updateWine); 
app.delete('/wines/:id', wine.deleteWine); 

http.createServer(app).listen(app.get('port'), function() { 
console.log("Express server listening on port " + app.get('port')); 
}); 

ошибка им получать при попытке запуска узла :

/Sites/nodecellar/routes/wines.js:31 
db.open(function(err, db) { 
^ 
ReferenceError: db is not defined 
    at Object.<anonymous> (/Sites/nodecellar/routes/wines.js:31:1) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/Sites/nodecellar/server.js:4:12) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 

Любые советы о том, что здесь не так?

+1

Не могли бы вы предоставить больше контекста? Я не вижу вызов 'db.open' в wines.js (хотя я вижу' DBCon.open'), и трудно определить, где проблема на самом деле. – George

ответ

0

Ваша проблема почти наверняка связана с настройкой подключения к серверу. В учебном пособии представлены обновления драйвера, которые сделали интерфейс однородным на всех платформах, и принятый способ - настроить с помощью класса MongoClient.

Посмотрите примечания в формате URL-адреса, так как вам, вероятно, потребуется передать свои учетные данные и базу данных, чтобы подключиться к ним.

Смежные вопросы