如何在Mongoose中使用汇总方法(.lookup,.match等)制作查询助手?

时间:2019-01-03 18:53:31

标签: mongoose

当您使用.aggregate本身,.lookup或.match等聚合方法时,查询助手无法正常工作。与.where,.find,.limit等常规方法相反。

例如,这有效:

Model.aggregate().match(...).lookup(...).exec(function(err, item) { .. };

但这不是..

userSchema.query.findUser = function(id) {
    return this.match({'_id': id});
}

userSchema.query.getPosts = function(id) {
    return this.lookup({'from': 'posts', 'localField': 'posts', 'foreignField': '_id', 'as': 'intents' });
}

....

User.aggregate().findUser(id).getPosts().exec(function(err, item) { ... };

这行不行吗?还是有其他方法可以使用聚合方法来执行查询助手。我知道我可以在这种情况下使用.populate,但是我只是为了演示目的编写了一个简单的聚合。我在应用程序中做了一些更复杂的事情,使用这样的方法会很有用。

0 个答案:

没有答案