如何使用对象的键在帆中对记录进行排序js
问题描述:
你好朋友我正在使用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 : {}
答
我已删除从getPost
sort('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});
}
});
}
和它的作品。我有降序排列的帖子。
我试过'sort('liked.count desc')'但是不知道为什么它不工作。请帮忙 –