2016-06-10 81 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}); 
      } 
     }); 
    } 

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

相关问题