2 回答
TA贡献1864条经验 获得超2个赞
把 query Mongodb 那段写成一个function, 这个function return promise。 然后调用这个function 就不low了。
function queryToDB(url){
return new Promise(function(resolve, reject){
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){
if(err) reject(err);
else resolve(Database)
});
});
queryToDB(url).then(function(result){
if(result && result.length > 0){
ctx.body = result;
}
}).catch(function(ex){
// Todo:
});
TA贡献1813条经验 获得超2个赞
优雅的建议
把
MongoClient.connect
用util.promisify
把他改成promise
用await
等待链接成功。持久化数据链接,不要每次请求链接数据库。
把
const collection = db.collection('site');
写成类的模式Site.find
。同理把
Site.find
写成await
。
添加回答
举报