我试图让node.js写入控制台表中的数据,我的其他表工作。
每当我尝试时,我都会得到以下输出:
NO ERROR!
QUERY:{"emitted":{"complete":[[]]},"_events":{}}
我在模式定义中遗漏了什么吗?任何帮助都会很感激。
——埃里克。
下面的代码来自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
)传递给exec
回调。分配给query
的返回值是从exec
返回的Promise
对象。
您的另一个问题是,如果您不提供模型名称,Mongoose会将模型名称复数化并小写以派生集合名称。要使它使用userAssessments
集合而不是userassessments
,您需要在mongoose.model
调用中提供该集合名称。
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!");
}
});
};