2017-03-03 60 views
1

我有節點寫入的方法如下從收集查詢如何與貓鼬一起執行排序和限制查詢?

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); 
}) 
+0

如果您不提供回調,exec'會返回一個承諾,那麼爲什麼您要創建自己的承諾?無論如何,排序和限制參數來自哪裏? – JohnnyHK

+0

@JohnnyHK限制和排序我在mongo db上執行,我想知道如何改變上面的代碼來支持它? – Sajeetharan

回答

1

只要打電話sortlimitQuery對象從find調用返回。

但是,您不需要創建自己的Promise,因爲exec已經返回承諾,如果您不提供回調。

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