使用联接查找用户

using joins to find users

本文关键字:查找 用户      更新时间:2023-09-26

我正在我的应用程序中构建一个收件箱部分。对话只发生在双方、演员和客户之间。

在收件箱页面上,我找到了所有"对话"文档,其中clientId$or actorId字段与Meteor.userId()的字段匹配

因此,光标返回符合此条件的文档,这是预期的。假设我以演员身份登录,并且与 5 个不同的客户进行了对话,这 5 个对话文档将发送给客户。

然后,如何获取这些对话文档的 5 个不同的 clientId 并创建一个订阅以仅返回这些用户对象?

我想这样做的原因是显示用户的个人资料图片,名称并通过其个人资料页面提供链接。

这是我的代码:

出版

    Meteor.publish('Conversations', function() {
  return Conversations.find({$or: [{'clientId': this.userId}, {'actorId': this.userId}]});
});

路由/订阅

// Inbox
  Router.route('/inbox', {
    name: 'inbox',
    waitOn: function() {
      return [Meteor.subscribe('Messages', this.params._id), Meteor.subscribe('Conversations')]
    }
  });

我还没有测试过这些技术,但我相信你正在研究其中一种。

  1. 使用$lookup聚合(这基于 2 制作一个松乐集合)
  2. db.small_collection.find().forEach(function(obj){db.big_collection.查找(对象)});