[英]order post in nodejs + mongodb
I am ordering the posts by age of the user and not by date of the post, I am using nodejs and mongodb:我按用户的年龄而不是按帖子的日期排序帖子,我使用的是 nodejs 和 mongodb:
router.get("/", function(req, res, next) {
if (req.session._id && req.session.user) {
user.getAll((err, users) => {
var posts = [];
for (var i = 0; i < users.length; i++) {
for (var j = 0; j < users[i].posts.length; j++) {
users[i].posts[j].timeago = ta.ago(users[i].posts[j].createdAt);
posts.push({ user: users[i], post: users[i].posts[j] });
}
}
user.findOne({ username: req.session.user }, (error, req_user) => {
/* for(var z=0;z<req_user.followers.length;z++) {
user.findOne({_id:req_user.followers[z]}, (e,followedUser) => {
posts.push(followedUser.posts)
})
}
*/
var lastSeen = ta.ago(req_user.lastLogin);
//console.log(posts)
res.render("home", {
user: req_user,
title: req.app.conf.name,
lastSeen: lastSeen,
people: users,
posts: posts.reverse()
});
});
});
} else {
res.render("auth/login", {
title: req.app.conf.name,
error: false
});
}
});
I would like to order it by the most recent post, any solution?我想通过最近的帖子订购它,有什么解决方案吗?
I think the main part of the problem is:我认为问题的主要部分是:
posts.push({ user: users[i], post: users[i].posts[j] });
and that you should use.sort (createdAt), but I don't know exactly how.并且您应该使用.sort(createdAt),但我不知道具体如何。
You should sort the posts before adding them to the array, something like the following:您应该在将帖子添加到数组之前对其进行排序,如下所示:
function sort_array_of_obj(a, b) {
if (a.createdAt < b.createdAt){
return -1;
}
if (a.createdAt > b.createdAt){
return 1;
}
return 0;
}
for (var i = 0; i < users.length; i++) {
users[i].posts.sort(sort_array_of_obj)
for (var j = 0; j < users[i].posts.length; j++) {
users[i].posts[j].timeago = ta.ago(users[i].posts[j].createdAt);
}
posts.push({ user: users[i], post: users[i].posts[j] });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.