MongooseJS架构关系
MongooseJS schema relation
本文关键字:关系 MongooseJS 更新时间:2023-09-26
我有如下MongooseJS模式:
var UserSchema = new Schema({
name : String,
app_key : String,
app_secret : String,
tasks : [{ type : Schema.ObjectId,
ref : 'Task'}]
})
var ActionSchema = new Schema({
name : String,
description : String,
module : String
})
var enumTaskState = ['New', 'Indexing', 'Idle', 'In Queue', 'Working'];
var TaskSchema = new Schema({
name : String,
lastPerformed : Date,
folder : String,
actions : [{type : Schema.ObjectId,
ref : 'Task'}],
user : { type : Schema.ObjectId,
ref : 'User'},
status : { type : String,
enum : enumTaskState,
default : 'New'}
})
问题是,当我设置任务的用户时,我是否必须手动转到该用户并在那里添加任务?这似乎是额外的工作(冗余),在mongoosejs中有没有一个选项可以让我指定它将自己处理所有事情的关系?谢谢
MongoDB不是一个关系数据库,它是一个基于文档的数据库。
您可以通过查询TaskSchema并查找所需用户来获取用户的任务列表。只需确保添加一个索引,这样它将是一个快速查询:
user: {type: Schema.ObjectId, ref: 'User', index: true}
详细说明emostar的答案:
您正试图像使用关系数据库一样使用MongoDB。您向用户提供了一个任务列表,但每个任务都引用了一个用户。在一个典型的MongoDB模式中,你会弄清楚如何在应用程序中使用模型,并将文档嵌入到有意义的地方(例如,如果用户包含一组任务,则任务不需要引用其所有者——只需查看拥有集合的用户即可)。
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 如何在Parse中创建一对多关系
- Ext.js从json构建模型关系的问题
- JSDoc:模块和名称空间之间的关系是什么
- 单元测试依赖关系没有被嘲笑
- FRP 中 EventStreams 的循环依赖关系
- 节点模块依赖关系
- html5视频播放器和视频js之间的关系
- 如何从类关系中检索对象列表
- 在Meteor中使用具有依赖关系的NPM包
- AngularJs-在两个数组中查找关系信息
- requirejs定义:嵌套依赖关系
- Django管道和javascript依赖关系
- MIME与JavaScript的关系如何
- 两个集合mongodb之间的关系
- 不使用关系运算符的JavaScript条件表达式
- 骨干关系中的链接模型
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- Npm未满足对等依赖关系
- MongooseJS架构关系