【发布时间】:2019-10-22 05:19:58
【问题描述】:
使用Mongoose 和RESTful API 我想要2 个集合(organizations 和projects),而前者的Schema 应该包含projects 类型的[ObjectId] 字段,它引用了后者的文件 - 反之亦然。
创建一个新组织 (POST /organizations) 可以 (a) 将 projects 字段留空并稍后添加项目文档 (POST /projects) 或 (b) 已经使用它创建一些项目。
(b)的问题:
好像和 RESTful 有冲突,因为发布了一个 新组织应该有不同的 API 点而不是发布一个 新项目 - 但我们希望一次性实现。
当我们创建一个新组织时,
projects字段应该包含一个数组 引用相应项目的 ObjectIds - 但这些 还没有 ID。
可能有很多方法可以实现目标 - 即 2 个连续的 POST 请求:首先是项目,然后是组织。 但我想了解此场景的最佳实践。
组织架构:
{
name: { type: String, required: true },
address: { type: String },
// projects = array of ObjectIds referring to Project documents
projects: { type: [Mongoose.Schema.Types.ObjectId] }
}
项目架构:
{
name: { type: String, required: true },
start: { type: Date },
end: { type: Date },
organization: { type: Mongoose.Schema.Types.ObjectId }
}
所提供的问题描述和代码是大型项目的简化示例,该项目将有许多模型/集合和大量交叉引用。
可以将项目作为组织文档的子文档数组,但我更希望将项目作为独立集合,因为应该可以请求整个集合以获取项目视图,而无需浏览组织文件。
【问题讨论】:
标签: mongodb rest mongoose mongoose-schema