如何与mongoose一起执行排序和限制查询?

时间:2017-03-03 03:59:33

标签: node.js mongodb mongoose

我有一个用节点编写的方法,从集合

查询
  query: function (model, conditon, options) {
            console.log(conditon, options);
            return new Promise(function (resolve, reject) {
                options = options || {};

                model.find(conditon, {}, options).exec(function (error, data) {
                    if (error)
                        reject(error);
                    resolve(data);
                })
            })
        }

我想获取以下查询的数据,

db.getCollection('_event').find({}).sort({'metadata.popularity': 1}).limit(10)

我应如何修改上述方法以支持此查询?

这是我从另一个文件调用查询函数的方式,

 dbService.query(eventModel, { 'eventId': idRetrieved }, {});
 }).then(data => dbService.disconnectDb(data))
    .then(data => callback(data))
     .catch((error) => {
          dbService.disconnectDb(error).then(error => {
          console.log(error);
          callback({}, error);
})

1 个答案:

答案 0 :(得分:1)

只需在Query来电回复的find对象上拨打sortlimit即可。

但是,如果您不提供回调,则不需要创建自己的Promise,因为exec已经返回承诺。

function (model, condition, options, sort, limit) {
    return model.find(condition, {}, options).sort(sort).limit(limit).exec();
}