javascript - 在 Meteor 中创建多个用户合约

标签 javascript node.js meteor meteor-autoform

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

在 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/

相关文章:

node.js - Mongoose 在子文档属性上强制执行唯一属性

javascript - 从 contenteditable 填充并保存文本

javascript - 在 JavaScript 中获取 HTML 节点的形状/轮廓

javascript - 我们可以用javascript连接数据库吗

node.js - Node : Express app don't start in windows

node.js - 错误 : SyntaxError: Unexpected end of JSON input

javascript - 根据 bool 值切换 D3 形状

javascript - 登录表单消失了? meteor 教程

javascript - Meteor 聊天框 html 卡在字符串形式

javascript - React 网站加载缓慢 - 是否由于许多静态 Assets ?