在Meteor中创建多个用户合同

时间:2015-06-29 11:39:40

标签: javascript node.js meteor meteor-autoform

我想创建一个系统,可以创建属于不同用户的多个合同。

在Django,Ruby等中,我会创建一个带有Contract字段的模型user = models.ForeignKey(settings.AUTH_USER_MODEL),但我不知道如何在Meteor中执行此操作。

使用

制作架构是否更好?
Schema.User = new SimpleSchema({
  contracts: {
    type: [Object],
  },
  "contracts.$.start_date": {
    type: Date,
  },
  "contracts.$.end_date": {
    type: Date,
  },
  "contracts.$.salary": {
    type: Number,
  }
});

或类似的东西?然后使用meteor-autoform创建这些?在Meteor中制作对象似乎非常困难。

1 个答案:

答案 0 :(得分:0)

MongoDB不是关系数据库,因此您需要自己手动处理关系(使用多个查询)。传统上,Mongo文档尽可能使用嵌入,并在必要时使用单独的集合。有关更多信息,请参见此处:

MongoDB relationships: embed or reference?

然而,由于发布模型只能发布顶级文档,并且在编写模板等时几乎不支持文档层次结构,Meteor会在工作中抛出一个扳手。

因此,Meteor下的常规方法是为每个集合创建表,并使用ID来记录其他记录:

Schema.User = new SimpleSchema({
  contracts: {
    type: [String],
  },
  ...
});

Schema.Contract = new SimpleSchema({
  user: {
    type: String,
    index: true
  },
  ...
});

虽然这会导致您不得不进行多次查询,但结构将与Meteor的设计理念一致。