我不能让mongoose / node.js正确检索数据。 我究竟做错了什么?

我想获得node.js写入控制台的数据在表中,我的其他表工作。

每当我尝试我得到以下输出:

NO ERROR! QUERY:{"emitted":{"complete":[[]]},"_events":{}} 

我在Schema定义中遗漏了什么? 任何帮助,将不胜感激。
– 埃里克

以下是来自mongo shell:

 > db.userAssessments.find({}) { "accountId" : "509683edcb884b0000000001", "created" : ISODate("2013-01-12T03:31:20.723Z"), "_id" : ObjectId("50f0d9084469766bb7000001") } 

这是我的js:

 var userAssessmentsSchema = new mongoose.Schema({ accountId : String, created : Date, id: String }); ANALYZER.userAssessments = mongoose.model('userAssessments', userAssessmentsSchema); ANALYZER.analyzeAssessment = function() { var query = ANALYZER.userAssessments.find({}).exec(function(err, ass) { if (!err) { console.log("NO ERROR!"); console.log("QUERY:" + JSON.stringify(query)); } else { console.log("ERROR!"); } }); }; 

find查询的结果作为第二个参数(代码中的ass )传递给execcallback函数。 您分配给query的返回值是从exec返回的Promise对象。

UPDATE

你的另一个问题是,如果你没有提供一个Mongoose,那么Mongoose会复数化并且小写这个模型名称来得到集合名称。 要使用userAssessments集合而不是userassessments您需要在userassessments调用中提供该集合名称。

所以你的代码应该是这样的:

 ANALYZER.userAssessments = mongoose.model( 'userAssessments', userAssessmentsSchema, 'userAssessments'); ANALYZER.analyzeAssessment = function() { ANALYZER.userAssessments.find({}).exec(function(err, ass) { if (!err) { console.log("NO ERROR!"); console.log("QUERY:" + JSON.stringify(ass)); } else { console.log("ERROR!"); } }); };