这个问题一般存在于,mongodb集合为空的时候,去查询集合会报错,暂时的解决办法是判断集合是否为null 借助col.find(where).next(function (err, doc) { doc 返回null说明为集合空 }) 这是婉转的解决方法,也不知道对性能有没有影响;欢迎评论指正。下面给个例子 //分页查询 exports.findPage=function (collection,where,page=1,pageNum=30) { return new Promise(function (resolve, reject) { db.then(db=>{ let col=db.collection(collection); col.find(where).next(function (err, doc) { if(err){ reject1('数据库查询错误'); return false } //不为null 的时候正常查询返回需要的数据 if(doc){ let list=new Promise((resolve1, reject1) => { let find=col.find(where); // 分页查询 find.skip((page-1)*pageNum).limit(pageNum).toArray((err,arr)=>{ if(err){ reject1('数据查询失败'); return false } resolve1(arr) }) }); //查询数据库集合元素的总数 let count=new Promise((resolve1, reject1) => { col.countDocuments(where,function (err, res) { if(err){ //logs.dbErr(logUrl,timeFormat()+'数据长度查询失败'+err+'\n'); reject1('数据长度查询失败'); return false } resolve1(res); }) }); //处理需要的数据格式 Promise.all([list,count]).then(function (result) { let arr=result[0]; let count=result[1]; resolve({arr,count}); }).catch(err=>{ reject(err) }) }else { //null 直接返回需要的数据初始值 resolve({ count:0, arr:[] }) } }); }) }) };
nodeJs 解决 mongodb TypeError: Cannot read property 'n' of undefined问题
最新推荐文章于 2022-06-28 15:22:02 发布