如何将用户信息加入评论集? (个人资料/评论案例)

时间:2015-10-13 07:22:24

标签: mongodb meteor

我是MongoDB的新手,我正在尝试做一种“个人资料/评论”模块。我将这两个实体保存到两个不同的集合中,因为我读到了有很多嵌套元素的一些限制(在这种情况下,评论会增长很多)。

我的架构是:

评论:

{
    "_id" : ObjectId("56073ea299f4ebd05df813a8"),
    "rate" : "0", 
    "owner" : "xub32YLjc4xJa38aM",
    "to" : "8zqCPbkwYMfajyFQx",
    "createdAt" : ISODate("2015-09-27T00:56:02.328Z")
}

其中:

  • 评分:可以是0或1(不好又好,简单)
  • 所有者:进行审核的用户ID
  • :已审核的个人资料ID

资料:

{
    "_id" : "8zqCPbkwYMfajyFQx",
    "CI" : "19",
    "firstName" : "Alan",
    "lastName" : "Brito Delgado",
    "gender" : "m",
    "bio" : "lorem ipsum haha a bio right here pls",
    "birthdate" : ISODate("2015-09-26T01:54:46.687Z"),
    "specialty" : "Medico generalshhh",
    "worksIn" : "Integramedica",
    "academicInformation" : "Medicia UC 2010",
    "avatar_url" : "img/doctor-1.png",
    "certified" : false
}

其中: - CI,专业,WorksIn,AcademicInformation和Certified 是我用来过滤个人资料的字段

我的问题是我想制作一个“排名视图”,人们可以添加过滤器来根据他们的过滤器查看排名,而且,我不知道如何加入有关个人资料和评论计数的信息。 (排名基于好评的数量

我有一种方法可以知道按个人资料分组的“好”评论的数量,但是,我不知道如何附加“个人资料”信息:

db.reviews.group({
  key: {to:1},
  cond: {rate:"1"},
  reduce: function(curr, result){
      result.count++;
  },
  initial: { count: 0 }
})

示例原型 enter image description here

我现在的型号可以吗?或者我需要在评论中嵌套个人资料或附加用户进行审核? (使用第二种方法,我想我的用户信息不会更新)

PS:我查看个人资料,而不是用户,因此,用户与个人资料不同

1 个答案:

答案 0 :(得分:0)

普遍的共识是,如果您不需要反应性地发布,请在客户端进行加入。然而,流星的意义在于建立反应性应用。

你看过关系发表了吗? https://github.com/svasva/meteor-publish-with-relations

你想要这样的东西:

Meteor.publish('rating', function(id) {
    Meteor.publishWithRelations({
      handle: this,
      collection: ratings,
      filter: id,
      mappings: [{
        key: '_id',
        collection: Meteor.profiles
      }, {
        reverse: true,
        key: '_id',
        collection: Comments,
        filter: { approved: true },
        options: {
          limit: 10,
          sort: { createdAt: -1 }
        },
        mappings: [{
          key: '_id',
          collection: Meteor.profiles
        }]
      }]
    });
  });

另请参见发布回复https://atmosphere.meteor.com/package/reactive-publish

最后,Meteor的大量资源和值得购买的电子书https://www.discovermeteor.com/

ps - 我假设你想要一个Meteor答案给出标签。如果你想要纯粹的mongodb,那么以上可能不会帮助你