【问题标题】:I can not get mongoose/node.js to retrieve data properly. What am I doing wrong?我无法让 mongoose/node.js 正确检索数据。我究竟做错了什么?
【发布时间】:2013-01-12 22:44:51
【问题描述】:

我正在尝试让 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!");
        }
    });
};

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

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

    更新

    您的另一个问题是 Mongoose pluralizes and lower-cases 如果您不提供模型名称来派生集合名称。要使其使用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!");
            }
        });
    };
    

    【讨论】:

    • 在此更改后您看到了什么记录?
    • @EricW 查看更新的答案。很可能使用了错误的集合名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2016-07-18
    • 2010-09-14
    • 2013-09-07
    相关资源
    最近更新 更多