我想创建一个可以创建属于不同用户的多个合约的系统。
在 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 中使对象具有关联性似乎非常困难。
最佳答案
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 的设计理念。
关于javascript - 在 Meteor 中创建多个用户合约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31114743/