【发布时间】:2018-05-24 12:11:27
【问题描述】:
我正在尝试在我的 dbConnection.js 中配置连接
将我在 Mlab 中托管的 MongoDb 连接到我在 Heroku 中托管的 NodeJs 应用程序。
我认为问题是允许的。
我的问题:我怎样才能使用 ONLY 默认的 MongoDb 驱动程序配置“connectionString”(例如,没有 Mongoose 和类似的东西。我想制作和学习基本和默认方法)
我的应用程序有一个调用 server.js 的 App.Js
/* importar as configurações do servidor */
var app = require('./config/server');
var port = (process.env.PORT || 8080);
/* parametrizar a porta de escuta */
app.listen(port, function(){
console.log('');
console.log('|*****************************************************|');
console.log('|----------- Servidor online na porta: ' + port + ' ----------|');
console.log('|*****************************************************|');
console.log('');
})
我的 server.js 使用 MongoDb,包括 dbConnection.js。
server.js
...some code
mongodb = require('mongodb'), // <--- var para o banco de dados
objectId = require('mongodb').ObjectId;
//var url = PROD_MONGODB //'mongodb://localhost:27017/my_database_name';
var url = process.env.MONGOLAB_URI;
... some code
我的 dbConnection.js var connMongoDB 是:
/* Importar o MongoDB */
var mongo = require('mongodb');
/*var connMongoDB = function(){
console.log('========== Entrou na function de connection! =============');
var db = new mongo.Db(
'OPDC', // PARAM 1 = nome do banco
new mongo.Server( // PARAM 2 = objetos basicos de conexao
'localhost', // string contendo o endereco do servidor
27017, // porta
{} // opc de config do servidor
),
{} // PARAM 3 = configs opcionais
);
return db;
}*/
var connMongoDB = function(){
console.log('========== Entrou na function de connection! =============');
var db = new mongo.Db(
'heroku_f6bst99r', // PARAM 1 = database name
new mongo.Server( // PARAM 2 = basic objects for connection
'ds129776.mlab.com', // string with the server address
29776, // port
{} // server config options?
),
{} // PARAM 3 = opcionals configs
);
return db;
}
module.exports = function(){
return connMongoDB;
}
一些观察:
- 本地主机(应用程序和数据库)一切正常
- 已发布的节点在没有数据库连接的情况下仍然可以工作(例如一个简单的返回消息
- 我仍然可以连接和使用我托管的 Mlab MongoDb
错误如下: 地址:https://opdcapi.herokuapp.com/ 错误:
{"name":"MongoError","message":"not authorized on heroku_f6bst99r to execute command { find: \"brand\", filter: {} }","ok":0,"errmsg":"not authorized on heroku_f6bst99r to execute command { find: \"brand\", filter: {} }","code":13,"codeName":"Unauthorized"}
【问题讨论】:
-
改用
mongoClient,效果更好 -
我已经在DAO中使用了mongoClient IndexDAO.prototype.getBrands= function(res){ //res.send({msg:'API在线!!!!!!!!!'} ); this._connection.open(function(err, mongoclient){ mongoclient.collection("brand", function(err, collection){ collection.find().toArray(function(err, result){ console.log(result); if(err){ //res.status(404).json(err); res.json(err); }else{ //res.status(200).json(result); res.json(result); } mongoclient.close(); // 获取一个 conexao }); }); }); }
-
那么就
Mongoclient.connect("mongod://<mlab username>:<mlab pass>@<address>.mlab.com:<PORT>/<database name>")例如mongodb://<adminuser>:<password>@ds012345-a0.mlab.com:56789/mydb -
我可以把这个放在我的代码什么地方??
标签: node.js mongodb heroku mlab