【发布时间】:2016-05-25 08:01:21
【问题描述】:
必须改进我当前的 Express/Mongoose 服务器,认为我可能需要使用 mongoose.createConnection 而不是 mongoose.connect,并且可能需要维护一系列连接,并在连接终止时删除索引 - 所以我需要一些输入来自你们的集体意识。
脚本基本上是这样构建的:
// Constants
var MONGO_SERVER = "mongodb://user:pass@localhost/dbname";
// Connection Handlers
function checkConnection(cb) {
if (mongoose.Connection.STATES.connected !== mongoose.connection.readyState) connectMongo(cb());
else cb();
}
function connectMongo(cb) {
db = mongoose.connect(MONGO_SERVER,function(err){if (err) throw err; else if (typeof cb==="function") cb();});
}
// Setup connection
mongoose = require('mongoose');
var db = {};
connectMongo();
Schema = mongoose.Schema;
ObjectId = Schema.ObjectId;
// Schemas...
var UsersSchema = new Schema({
display_name : String,
email : String
});
//...
var users = mongoose.model('Users',UsersSchema);
//...
function login(conn,obj,link_id) {
checkConnection(function() {
try {
//...
}
catch (ex) {
console.log(ex.message);
}
});
}
现在,这行得通,但看到一些性能问题和一些查询似乎挂起告诉我需要重新塑造这种类型的执行,也许让 var db = {} 成为一个数组,并使用 createConnection push到最后。不需要直接的答案,只需朝正确的方向轻推即可。
谢谢。
【问题讨论】:
-
除非我遗漏了部分问题,猫鼬的连接池不会自动处理异步连接吗?请参阅connection 文档。
-
正如 Ashley B 所说,Mongoose 处理所有这些异步的事情。还不满意,可以mongoose-and-multiple-database-in-single-node-js-project
标签: node.js mongodb express asynchronous mongoose