Node.js Mongodb 原生驱动组织
Node.js Mongodb native-drive organisation
如何在一个大项目中组织Mongodb原生驱动程序?
目前,我在每个"模型"中都使用此代码,该模型基本上只是模块中的一个对象。
用户.js
var mongo = require('mongodb');
var Users = {};
Users.db = new mongo.Db(...);
Users.db.open = function(e, c){
if(e){ throw new Error(e); } else {
console.log('connection opened'); }
};
Users.c = Users.db.collection('users');
Users.login = function(username, rawPassword, callback){
Users.c.findOne({ username: username }, function(e, o){
if(o.password === encrypt(rawPassword)){ callback(o); }
else { callback(null); }
});
};
但是,这是在每个分离模型中打开数据库连接的最佳方式吗?如何正确共享模型之间的连接?这将是一个很好的解决方案:
数据库连接.js
var mongo = require('mongodb');
var RedisClient = require('redis-client');
module.exports = {
main: new mongo.Db(...),
log: new mongo.Db(...),
cache: new RedisClient(...)
};
因此,每次我们使用数据库连接时,我们都可以改用它:
用户.js
var mainDb = require('database-connections.js').main;
var logDb = require('database-connections.js').log;
var cacheDb = require('database-connections.js').cache;
mainDb.open(function(e, c)){
if(e){ throw new Error(e); } else {
mainDb.collection('users', function(e, c){
// do work.
});
}
});
在我回答你之前的问题时,我说mongodb原生api笨重且难以使用。我想我们可以在这里看到原因。
使用 mongojs
用户.js
var db = require("mongojs").connect('maindb', ['users']);
db.users.find({},
function(err, results){
//do something with the results
})
我认为这很简单,对于较大的应用程序会更好。
相关文章:
- js代码从jQuery转换为原生代码
- 如何通过JQuery触发JS原生甚至addEventListener(“change”,函数)
- Node.js Mongodb原生驱动程序连接共享
- Node.js Mongodb 原生驱动组织
- 简单扩展原生JS
- 使用角度's原生ngRoute(angular-route.js v1.3.15)
- 如何使用原生JS创建脚本的完整副本
- Prototypejs $super的原生 JS 实现
- Nodejs4.x上的ES6代码:V8 4.5是一个直接运行ES6的原生JS引擎吗
- 实现$(el).trigger('我的事件',{some:'数据'});在原生js中
- 将原生JS转换为Angularjs来计算两个日期之间的天数
- 原生JS相当于jQuery委托
- FireFox插件:如何覆盖原生js函数
- 将jQuery的click()、hide()和fadeIn()转换为原生JS
- 可切换的原生JS盒子
- 原生js图表
- 将单个事件附加到存储在数组中的多个元素,原生JS
- 为什么原生JS FILTER函数会改变它的输出
- 跳出jQuery循环vs原生JS for循环.哪个更好
- node.JS和FRP(bacon.JS)中的原生JS