Boa noite, eu estou tentando fazer a parte do curso onde isolo a conexão para um connection factory, mais não estou conseguindo fazer isso com o MongoDB.
Segue o código:
let mongoClient = require('mongodb').MongoClient;
module.exports = function(app) {
app.get("/produtos",function(req, res) {
let url = 'mongodb://localhost:27017/casadocodigo';
mongoClient.connect(url, function(err, db) {
console.log("Conexão estabelecida!");
let collection = db.collection('produto');
collection.find({}).toArray(function(err, result) {
res.render('produtos/lista', {lista:result})
});
db.close();
});
});
}
queria isolar a parte da conexão, tentei fazer o seguinte:
let mongoClient = require('mongodb').MongoClient;
module.exports = function() {
let url = 'mongodb://localhost:27017/casadocodigo';
mongoClient.connect(url, function(err, db) {
db.collection('produto');
});
}
e tentei usar da seguinte forma:
let mongodb = require('../infra/connectionFactory');
module.exports = function(app) {
app.get("/produtos",function(req, res) {
let collection = mongodb.collection('produto');
collection.find({}).toArray(function(err, result) {
res.render('produtos/lista', {lista:result})
});
db.close();
});
}
E quando acesso: http://localhost:3000/produtos, recebo o seguinte erro:
TypeError: mongodb.collection is not a function
at c:\Dev\Alura\Javascript\Node\casadocodigo\app\routes\produtos.js:10:34
at Layer.handle [as handle_request] (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
at next (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
at c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\index.js:281:22
at Function.process_params (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\index.js:335:12)
at next (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\index.js:275:10)
at expressInit (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\middleware\init.js:40:5)
at Layer.handle [as handle_request] (c:\Dev\Alura\Javascript\Node\casadocodigo\node_modules\express\lib\router\layer.js:95:5)
O erro eu até entendo, mais não estou conseguindo fazer de uma forma que funcione, já que não tenho experiência com javascript.
Será que alguém poderia me dar uma luz?