2016-06-10 47 views
0

你好朋友我正在使用sails js編寫Web服務。我獲取的所有帖子,並得到如下回應:如何使用對象的鍵在帆中對記錄進行排序js

[ 
    { 
    id: "559458c51ccc9c716dabf666", 
    comments : [], 
    liked : { 
     data : [ 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "abc" 
      }, 
      { 
       id: "559458c51eee9c716dabf111", 
       username : "xyz" 
      } 
     ], 
     count : 2 
    } 
    }, 

    { 
    id: "559458c51ccc9c716dabf666", 
    comments : [], 
    liked : { 
     data : [ 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "abc" 
      }, 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "pqr" 
      }, 
      { 
       id: "559458c51eee9c716dabf111", 
       username : "xyz" 
      } 
     ], 
     count : 3 
    } 
    } 
] 

我想排序上面使用喜歡的帖子的數量記錄。在上面的回覆中,我們正在計數爲liked { data : [], count : 2}

我做這樣的:

getPost: function(callback) { 
     Posts.find().sort('liked.count desc').populateAll().exec(function (err, posts) { 
      if(err) { 
       return callback({error:err, code:500}); 
      } 
      if (posts) { 
       callback(null,posts); 
      } 

     }); 
    } 

怎樣做才能使用count這是在liked : {}

+0

我試過'sort('liked.count desc')'但是不知道爲什麼它不工作。請幫忙 –

回答

0

我已刪除從getPostsort('liked.count desc')職位進行排序。

getPost: function(callback) { 
     Posts.find().populateAll().exec(function (err, posts) { 
      if(err) { 
       return callback({error:err, code:500}); 
      } 
      if (posts) { 
       callback(null,posts); 
      } 

    }); 
} 

並在控制器我打電話以上getPost象下面這樣:

getTopTip : function (req,res) { 
     Posts.getPost(function (err,tips) { 
      if(err) { 
       return res.notFound(); 
      } 

      // console.log(tips); 
      res.json({'count':tips.length, 'data':tips}); 

     }); 
    } 

我使用的console.log檢查響應並予m到處響應象下面這樣:

[ 
    { 
    id: "559458c51ccc9c716dabf666", 
    comments : [], 
    likes : [ 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "abc" 
      }, 
      { 
       id: "559458c51eee9c716dabf111", 
       username : "xyz" 
      } 
     ] 
    }, 

    { 
    id: "559458c51ccc9c716dabf666", 
    comments : [], 
    likes : [ 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "abc" 
      }, 
      { 
       id: "559458c51eee9c716dabf666", 
       username : "pqr" 
      }, 
      { 
       id: "559458c51eee9c716dabf111", 
       username : "xyz" 
      } 
     ] 
    } 
] 

我寫信排序功能在那個我打電話給getPost的控制器中。這個功能看起來象下面這樣:

function sortByKey(array, key) { 
    return array.sort(function(a, b) { 
     var x = a[key]; var y = b[key]; 
     return ((x > y) ? -1 : ((x < y) ? 1 : 0)); 
    }); 
} 

並在getTopTip我稱這一類函數象下面這樣:

getTopTip : function (req,res) { 
     Posts.getPost(function (err,tips) { 
      if(err) { 
       return res.notFound(); 
      } 
      if(tips) { 
       tips = sortByKey(tips, 'likes') 
       res.json({'count':tips.length, 'data':tips}); 
      } 
     }); 
    } 

和它的作品。我有降序排列的帖子。

相關問題