koa2中使用mongodb写api接口获取数据,怎么优雅的实现取到数据,(我是把数据添加到新建对象上,太low了)
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'youyue';
var obj = {};
module.exports = async(ctx,next)=>{
const num = ctx.query.num,
page = ctx.query.page,
sort = ctx.query.sort;
num = isNaN(num)? 10 : parseFloat(ctx.query.num)
page = isNaN(page)?0 : parseFloat(ctx.query.page)
sort = isNaN(sort)?-1 : parseFloat(ctx.query.sort)
console.log(num+"*"+sort+"*"+page);
MongoClient.connect(url, function (err, client) {
const db = client.db(dbName);
const collection = db.collection('site');
collection.find().sort({ id: sort }).skip(num*page).limit(num).toArray(function (err, Database){
console.log(Database);
//目标数据
obj.result = Database;
});
});
await next();
//填充数据到页面
ctx.body = obj.result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
把 query Mongodb 那段写成一个function, 这个function return promise。 然后调用这个function 就不low了。
优雅的建议
MongoClient.connect
用util.promisify
把他改成promise
用await
等待链接成功。const collection = db.collection('site');
写成类的模式Site.find
。Site.find
写成await
。