我想利用promises功能,我可以同步连接到
mongodb,我可以通过将连接传递给不同的模块来重用连接.
这是我想出来的东西
class MongoDB { constructor(db,collection) { this.collection = db.collection(collection); } find(query,projection) { if(projection) return this.collection.find(query,projection); else return this.collection.find(query); } } class Crew extends MongoDB { constructor(db) { super(db,'crews'); } validate() { } }
我想在我的初始代码中的某个位置设置一个连接,如下面的那个,然后重用不同类的连接,就像mongoose或monk那样,但只使用node-mongodb-native包.
MongoClient.connect(url) .then( (err,dbase) => { global.DB = dbase; }); var Crew = new CrewModel(global.DB); Crew.find({}) .then(function(resp) { console.log(resp); });
现在,db在主MongoDB类中返回undefined,并且无法通过谷歌或文档调试这个.
编辑:我曾假设承诺是同步的但事实并非如此.
解决方法
要重用连接,我会创建一个这样的模块.
module.exports = { connect: function(dbname,callback ) { MongoClient.connect(dbname,function(err,db) { _db = db; return callback( err ); }); },getDb: function() { return _db; } };
之后,您可以在启动应用程序之前连接到数据库
MongoConnection.connect("mongodb://localhost:27017/myDatabase",function(err){ app.listen(3000,function () { // you code }); });
考虑到您在js文件中创建了模块,您只需使用require来获取databaseConnection
var dbConnection = require("./myMongoConnection.js");
并获得连接使用
var db = MongoConnection.getDb();
原文地址:https://www.jb51.cc/nodejs/241067.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。