您如何遍历猫鼬查询?

时间:2019-01-29 05:20:12

标签: node.js mongoose

我是一个Java专家,我只是不明白为什么这行不通。

var results = QuestionEntryService.find( criteria );
while(results.hasNext()) {
  result = results.next();
  console.log(result);   
}

QuestionEntryService.find(条件)返回猫鼬model.Query对象。我可以理解结果没有hasNext(),因为它是mongo函数而不是mongoose。我尝试使用回调,但从未执行过。

已更新: 如果我输入Console.log(结果),则返回

model.Query {_mongooseOptions: Object, _transforms: Array(0), _hooks: Kareem, _executionCount: 0, mongooseCollection: NativeCollection, …}

1 个答案:

答案 0 :(得分:0)

当您使用find()时,它会为您提供结果数组。尝试使用猫鼬获取数据的方法也是错误的 所以当你想迭代它的时候

var results = QuestionEntryService.find( {criteria},(err, data)=>{ // this is a callback
for(let iteration of data){
  console.log(iteration);
}
});

当您使用回调进行开发时,最终将带您进入回调地狱问题。因此,请尝试使用Promise或async / await(最佳做法)。因此,

async function findData(){
var results = await QuestionEntryService.find({})exec();
console.log(results); // print out the array of results


return results;
}

}

//consume promise
findData().then((results)=>{
for(let iteration of results){
console.log(iteration);
});

模式

YourSchema = new Schema({
  you:{},
  me:{}
});

const model = module.exports = mongoose.model("model",YourSchema); // export your compiled mode

l

然后从您的常规服务器上访问

const model = require("./model"); // your file system

model.find({you:"name"},callback);