【问题标题】:Mongoose: Find and Sort with no resultsMongoose:查找和排序没有结果
【发布时间】:2016-05-11 23:25:12
【问题描述】:

我在使用 mongoose 进行排序时遇到问题。我正在尝试做一个返回空数组的查找,并且排序正在崩溃

jobsHandler.find({'created_at_timestamp_milliseconds': {$gte: timestamp}}).sort({'activity.activity_type':1}).exec(function(err, docs) {
    if(err) {
        return callback(err);
    }
    callback(null, docs);
});

TypeError: 无法读取未定义的属性“排序”

我验证了 find 返回一个空数组:

jobsHandler.find({'created_at_timestamp_milliseconds': {$gte: timestamp}}, function(err, result) {
    console.log(err)
    console.log(result)
})

返回:

未定义

[]

当有没有结果的风险时,你如何排序?

编辑

为了让引用此问题的其他人了解更多上下文,jobHandler 是 JobModel mongoose 模型的包装器。这是查找类:

function find(parameters, callback) {
    Job.find(parameters, callback);
}

接受的解决方案有效,因为代码在查找中运行,而不是在查找完成后运行。

【问题讨论】:

  • jobsHandler 是猫鼬模型吗?
  • jobsHandler 是一个猫鼬模型
  • 这没有意义; find 始终返回 Query 对象(具有 sort 方法)。
  • 你是对的,这实际上是因为我的 find 是一个围绕数据库的包装类。这可能解释了为什么该解决方案有效

标签: node.js mongodb sorting mongoose


【解决方案1】:

试试这个代码:

jobsHandler.find({'created_at_timestamp_milliseconds': {$gte: timestamp}},null,{sort:{'activity.activity_type':1}}).exec(function(err, docs) {
if(err) {
    return callback(err);
}
callback(null, docs);

});

【讨论】:

  • 也许我遗漏了一些东西,但这应该等同于 OP 正在尝试的内容,并且没有解释他们看到的错误。
  • 我必须同意@JohnnyHK 的说法,还有其他事情正在发生。
猜你喜欢
  • 2015-04-09
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2018-05-15
相关资源
最近更新 更多