У меня нет опыта работы с mongoskin, но Mongoose аккуратно обходит эту проблему, возвращая экземпляр Mongoose синглтона каждый раз, когда вам это требуется.
, который позволяет создать соединение один раз (при запуске приложения,обычно) и просто используйте его, запрашивая Модели, когда вам это нужно.
Это также позволяет вам определять свои модели один раз так:
var mongoose = require('mongoose'),
TodoSchema = new mongoose.Schema({
title: { 'type': String, 'default': 'empty todo...' },
order: { 'type': Number },
done: { 'type': Boolean, 'default': false }
});
mongoose.model('Todo', TodoSchema);
И затем использовать их везде, где вам нравитсяэто:
var mongoose = require('mongoose'),
Todo = mongoose.model('Todo');
Больше информации о том, как Mongoose работает подобным образом, пример кода можно найти в этот ответ здесь .
Из документов mongoskin это выглядит таквам нужно подключаться каждый раз, когда вы хотите его использовать, что можно упростить, поместив соединение db в файл, который вам может потребоваться:
db.js
exports.db = require('mongoskin').db('myProject-' + process.env.NODE_ENV);
используйте его:
var db = require('./db');
db.open(function(err, data) {
(err) ? res.send('Internal server error', 500) : next();
});
Приведенный выше метод, где db передается в качестве аргумента каждой функции, которая может в ней нуждаться, приводит к обратному вызову супа, и его следует по возможности избегать.