#javascript #node.js #mongodb #express #monk
#javascript #node.js #mongodb #выразить #монах
Вопрос:
Я подключаю mongodb с monk
помощью app.js
var express = require('express');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
app.use(function(req,res,next){
req.db = db;
next();
});
Здесь все работает нормально. Но теперь я добавляю index.js в папке «Маршруты»
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
exports.index = function(req, res){
var collection = db.get('usercollection');
collection.find({},{},function(e,docs){
res.render('userlist', { "userlist" : docs});
});
res.render('index', { title: 'Express' })
};
Он также работает нормально. Но я подключаю БД как в app.js и index.js .
Что мне нужно сделать, чтобы определить это соединение в app.js доступен в index.js
Ответ №1:
Я знаю два решения:
Поместите соединение в другой файл, импортируйте этот файл.
db.js
var monk = require('monk');
module.exports = monk('localhost:27017/nodetest1');
Другие файлы:
var db = require('./db.js');
Или передавать одно и то же соединение по кругу:
app.js:
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
var module = require('./myModule.js')(db);
myModule.js:
module.exports = (db) => {
//...
};
Или:
app.js:
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
var module = require('./myModule.js');
module.init(db);
myModule.js:
var db;
exports.init = (masterDb) => {
db = masterDb;
};
И db
перед его использованием устанавливается проверка.
Ответ №2:
создайте отдельный файл типа database.js
и поместите в него код:
module.exports = {
url : 'mongodb://localhost/productecom'
};
и требуйте этот файл, где вам нужно подключение к базе данных:
как в index.js:
var database = require('./database');
mongoose.connect(database.url);
в моем примере есть mongodb и другой URL, внесите изменения в соответствии с вашими потребностями, поскольку я не знаю, monk
может быть, вам нужно экспортировать всю конфигурацию monk., это будет работать
Ответ №3:
Просто создайте простой db.js файл с подключением к базе данных и требовать вашего подключения всякий раз, когда вам нужно использовать его следующим образом:
db.js
var monk = require('monk');
module.exports = monk('localhost:27017/nodetest1');
app.js
...
var db = require('./db.js');
app.use(function(req,res,next){
req.db = db;
next();
});
index.js
var db = require('./../db.js');
exports.index = function(req, res){
var collection = db.get('usercollection');
collection.find({},{},function(e,docs){
res.render('userlist', { "userlist" : docs});
});
res.render('index', { title: 'Express' })
};
Благодарности @DrakaSAN, которые разделяют ту же концепцию.