如何在MongoDB中查询函数和res.render到ejs

时间:2017-08-27 20:50:09

标签: node.js mongodb

我想查询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));

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)

Javascript Promises