【发布时间】: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