我已根据Node.js的Express示例创建了一个非常简单的route-separation应用。我想使用MongoDB驱动程序Mongoose为此应用提供支持。此示例仅列出Users
和Kittens
。
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var user = require('./user');
var kitten = require('./kitten');
// Connect MongoDB
mongoose.connect('mongodb://localhost/mongoose');
// Express config here
...
// User
app.all('/users', user.list);
// Kitten
app.all('/kittens', kitten.list);
// Mongoose connection
var db = mongoose.connection;
db.once('open', function callback () {
var kittySchema = mongoose.Schema({ name: String });
});
if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}
对我来说,似乎在启动时连接到Mongo数据库而不是每个请求都是明智的。
但是如何与user
和kitten
路由共享Mongoose连接?我知道如果我不需要共享两者之间的连接,我可以使用user.js
和kitten.js
代码连接到数据库。
答案 0 :(得分:1)
在node.js
执行require
文件时,您可以在该文件中完成一次运行代码。这意味着你可以通过关闭存储东西。
foobardb.js
(function(){
"use strict"; // always nice to have
var mongoose = require('mongoose'),
databaseConnection;
module.exports = function() {
if ( !databaseConnection ) {
mongoose.connect('mongodb://localhost/mongoose')
databaseConnection = mongoose.connection;
}
(...)
};
})();
databaseConnection
将与您执行的所有require("foobardb.js");
共享