如何在 sails js 中使用对象的键对记录进行排序
How to sort records using object's key in sails js
你好朋友我正在使用 sails js 编写 web 服务。我正在获取所有帖子并收到以下回复:
[
{
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);
}
});
}
如何使用 liked : {}
中的 count
对帖子进行排序
我已经从 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 检查了响应,我得到了如下响应:
[
{
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});
}
});
}
并且有效。我有降序排列的帖子。
你好朋友我正在使用 sails js 编写 web 服务。我正在获取所有帖子并收到以下回复:
[
{
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);
}
});
}
如何使用 liked : {}
count
对帖子进行排序
我已经从 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 检查了响应,我得到了如下响应:
[
{
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});
}
});
}
并且有效。我有降序排列的帖子。