简体   繁体   English

nodejs + mongodb 中的订单发布

[英]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.

相关问题 NodeJS 和 MongoDB“无法 POST /” - NodeJS and MongoDB "Cannot POST /" Nodejs MongoDB - 添加新条目 Post() - Nodejs MongoDB - add new entry Post() 在NodeJS MongoDB中的嵌套for循环和回调中保留执行顺序 - Preserving Execution order in nested for loop and callbacks in NodeJS MongoDB NodeJS和MongoDB。 POST请求获取404代码 - NodeJS & MongoDB. POST Request gets 404 code POST之前如何检查数据库中是否已存在文档-MongoDB,NodeJS - How to check for document already in database before POST - MongoDB, NodeJS 如何创建自引用 MongoDB 架构并使用 nodejs 发布路由? - How to create self referencing MongoDB schema and post routes using nodejs? 我在 MongoDB 上的 POST 方法的 NodeJS 上出现 TypeError:无法读取未定义的属性(读取“名称”) - I'm Having a TypeError on NodeJS for POST method on MongoDB: Cannot read properties of undefined (reading 'name') 如何使用 REACTJS、NODEJS、EXPRESSJS 和 MONGODB 中的 API 进行 POST 数据? - How can do POST data using API from REACTJS ,NODEJS,EXPRESSJS AND MONGODB? 尝试使用NodeJS通过POST请求将多个文档/记录插入到MongoDB中 - Trying to insert multiple documents/records into MongoDB via a POST request using NodeJS 使用POST请求Ajax / NodeJs / MongoDB / Mongoose的“未捕获的TypeError:非法调用” - “Uncaught TypeError: Illegal invocation” using POST request Ajax/NodeJs / MongoDB / Mongoose
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM