我想创建一个系统,可以创建属于不同用户的多个合同。
在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中制作对象似乎非常困难。
答案 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的设计理念一致。