koa2 通过MongoDB Driver链接 mongodb的疑惑?
//官方的文档如下:
var MongoClient = require('mongodb').MongoClient
, assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected successfully to server");
/* 连接后的各种操作,问题就在这里
* koa2中有很多条路由,难道每条路由中都要如此先连接mongodb,在回调中进行操作,最后关闭,这不科学吧!
*
* 感觉应该是只建立一次连接,然后将连接成功后的 "db" 保存下来,在路由中随便使用,需要关闭的时候,直接调用 db.close(),断开连接;
*
* 这个db在连接的回调函数中,怎么弄出去(像同步那样)?不知道弄了。。。
*
*/
db.close();
});
/* 找资料。。。自己瞎琢磨,得到如下方式,不知是否正确?
*
* const MongoClient = require('mongodb').MongoClient;
* export var db = (async function() {
* try{
* return await MongoClient.connect('mongodb://localhost:27017/myproject');
* }catch(err){
* console.log(err);
* };
* })();
*
* 用的时候在 Koa2的路由中,如下这样
* db.then((db)=>{
* var collection = db.collection('documents');
* collection.find({}).toArray(function(err, docs) {
* console.log("Found the following records");
* console.log(docs)
* });
* });
*
*/
// koa2中的多条路由
router.get('/', (ctx, next) => {
//这里需要查询数据库
db.then((db)=>{
...
});
ctx.type = 'text/html; charset=utf-8';
ctx.body = pug.renderFile('views/index.pug',{
pageTitle:"Pug template engine",
pretty:true
});
});
router.get('/test', (ctx, next) => {
//这里需要插入数据库
db.then((db)=>{
...
});
ctx.body = 'Hello Koa2';
});
...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
GitHub上找到了项目monk,可以满足需求!
建议你用sequelizejs比较热门的orm框架