我想创建一个系统,其中可以创建属于不同用户的多个合同。
在Django、Ruby等中,我会创建一个带有字段user = models.ForeignKey(settings.AUTH_USER_MODEL)的模型Contract,但我不知道如何在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中使对象成为关系型似乎非常困难。
发布于 2015-06-29 19:58:59
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的设计理念。
https://stackoverflow.com/questions/31114743
复制相似问题