【问题标题】:Mongodb: How to load 'pages' of field of type array from the end of the array until its beginningMongodb:如何从数组末尾加载数组类型字段的“页面”直到其开头
【发布时间】:2022-01-04 10:14:44
【问题描述】:

我正在无限滚动显示消息。换句话说,我按组加载并使用此函数显示它们:

const getXNumberOfMessages = async (
  user_id,
  conv_id,
  page,
  results_per_page
) => {
  results_per_page = parseInt(results_per_page);

  const conversation = await Conversation.findOne({
    _id: conv_id,
    members: { $in: [user_id] },
  }).populate({
    path: "messages",
    options: {
      skip: results_per_page * page,
      limit: results_per_page,
      
    },
  });
  let messages = conversation.messages.map((message) => {
    message.text = encryptionServices.decryptPrivateMessage(message.text);
    return message;
  });
  return messages;
}; 

问题在于,您所知道的消息是从last setfirst set加载的。
而该功能则相反。
它会加载从 first setlast set 的消息。
知道如何实现我的目标吗?

【问题讨论】:

    标签: mongodb mongoose pagination infinite-scroll mern


    【解决方案1】:

    所以我设法解决了这个问题:

    const getXNumberOfMessages = async (
      user_id,
      conv_id,
      page,
      results_per_page
    ) => {
      results_per_page = parseInt(results_per_page);
    
      const conversation = await Conversation.findOne({
        _id: conv_id,
        members: { $in: [user_id] },
      }).populate({
        path: "messages",
        options: {
          skip: results_per_page * page,
          limit: results_per_page,
          sort: { date: -1 },
        },
      });
      let messages = conversation.messages.map((message) => {
        message.text = encryptionServices.decryptPrivateMessage(message.text);
        return message;
      });
      messages.reverse();
      return messages;
    };
    

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 2019-05-30
      • 2010-12-22
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2010-09-27
      • 2014-10-25
      • 2017-04-17
      相关资源
      最近更新 更多