我有一段代码可以找到数值字段“ordinal”中具有最高值的记录:

Job.find({}).sort({'ordinal': -1}).limit(1).then(maxOrd => {
    console.log(`Found MaxOrd: ${maxOrd}`);
});

这很好。现在,我想使它成为Job模式的静态方法。因此,我尝试:
JobSchema.statics.findMaxOrdinal = function(callback) {
    Job.find({}, callback).sort({'ordinal': -1}).limit(1);

};

...和:
Job.findMaxOrdinal().then(maxOrd => {
    console.log(`Found Max Ord using Promise: ${maxOrd}`);
});

但这不起作用,并且由于非常无用的堆栈跟踪而崩溃。

我该如何编写我的static,以便可以在Promise中使用它?

最佳答案

只需返回 Mongoose 查询,像这样:

JobSchema.statics.findMaxOrdinal = function() {
    return Job.find({}).sort({'ordinal': -1}).limit(1);
};

09-25 16:14