我想查询Mongodb中的最后10个元素并返回此查询中的元素以渲染到index.ejs我尝试了很多方法,例如(回调,asyc函数),但我无法解决这个问题
function getlastelements(ID){
var MongoC = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/Weatherdb';
MongoC.connect(url, function(err,db){
var collection = db.collection('datas');
collection.find({"ID" : String(ID)}).sort({_id:-1}).limit(10),(function(err,cursor){
var xyz = cursor.toArray();
return(xyz.length);
})
});
}
console.log(getlastelements(1));
答案 0 :(得分:1)
你的函数可以返回一个promise,你可以在其上调用.then()方法来获取值(同样,记得在函数末尾关闭db)
var mongodb = require('mongodb')
function getlastelements(ID){
return new Promise(function(resolve, reject){
var MongoC = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/Weatherdb';
MongoC.connect(url, function(err,db){
var collection = db.collection('datas');
collection.find({"ID" : String(ID)}).sort({_id:-1}).limit(10)
.toArray(function(err, cursor){
if(err) reject(err)
resolve(cursor.length)
db.close()
})
})
});
}
getlastelements(1).then(result => console.log(result)).catch(err => console.log(err)