Parse platform 聊天应用程序使用解析服务器列出每个对等方的最后消息

Parse platform 聊天应用程序使用解析服务器列出每个对等方的最后消息,parse-platform,parse-server,Parse Platform,Parse Server,我正在使用parse server做一个聊天应用程序,一切都很好,但我试着只列出每个远程对等方的最后一条消息。我没有发现任何查询限制如何从每个远程对等方仅获取一条消息我如何做到这一点 查询限制与 限制从使用的查询中获取的对象数 下面是一个小例子: const Messages = Parse.Object.extend("Messages"); const query = new Parse.Query(Messages); query.descending("creat

我正在使用parse server做一个聊天应用程序,一切都很好,但我试着只列出每个远程对等方的最后一条消息。我没有发现任何查询限制如何从每个远程对等方仅获取一条消息我如何做到这一点

查询限制与

限制从使用的查询中获取的对象数

下面是一个小例子:

    const Messages = Parse.Object.extend("Messages");
    const query = new Parse.Query(Messages);
    query.descending("createdAt");
    query.limit(1); // Get only one result
使用获取查询的第一个对象

在你的情况下,因为你真的只想要一个结果,你可以使用。 与方法类似,进行查询并仅返回查询的第一个结果

以下是一个例子:

    const Messages = Parse.Object.extend("Messages");
    const query = new Parse.Query(Messages);
    query.descending("createdAt");
    const message = await query.first();

我希望我的回答能帮助您如果您想使用单个查询来完成此操作,您必须使用聚合:

试着这样做:

var query = new Parse.Query("Messages");
var pipeline = [
  { match: { local: '_User$' + userID } },
  { sort: { createdAt: 1 } },
  { group: { remote: '$remote', lastMessage: { $last: '$body' } } },
];
query.aggregate(pipeline)
  .then(function(results) {
    // results contains unique score values
  })
  .catch(function(error) {
    // There was an error.
  });

感谢您的回答,我知道为查询设置限制,但这对我来说是不够的,因为当我与Everybody一起访问对象以获取列表消息时,我需要为每个远程对等点设置限制。您所说的远程对等点是什么意思?例如,您可以查看此图像以了解。我想列出你过去用最后一条消息与之交谈过的人我现在明白了,你能告诉我你是如何管理你的数据库的吗?我想看看用户表和消息表这正是我想要的,我会尽量感谢你:)我能用distinct on查询吗?我不这么认为。你试过我建议的问题了吗?我不太明白。[这是我的messages类](prnt.sc/pbzrfv),我可以在阅读mongo文档后使用它进行聚合。谢谢你救了我的命:)