Javascript MongooseJS模式关系
我有如下MongooseJS模式:Javascript MongooseJS模式关系,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有如下MongooseJS模式: var UserSchema = new Schema({ name : String, app_key : String, app_secret : String, tasks : [{ type : Schema.ObjectId, ref : 'Task'}] }) var ActionSch
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模式中,您将了解如何在应用程序中使用模型,并在有意义的地方嵌入文档(例如,如果用户包含一系列任务,则任务无需引用其所有者,只需查看拥有集合的用户即可)。如何创建新任务并与用户关联?