MongoDB Mongoose方案嵌套文档结构和关系
我有一个具有以下文档流的项目 用户->帐户->项目 用户MongoDB Mongoose方案嵌套文档结构和关系,mongodb,mongoose,database-design,schema,mongoose-schema,Mongodb,Mongoose,Database Design,Schema,Mongoose Schema,我有一个具有以下文档流的项目 用户->帐户->项目 用户 用户具有特定的角色 客户 由用户角色决定的积垢 特定用户将有权访问个人帐户。我想添加一个用户id为的数组用户组 项目 嵌套在与单个accountToken ID相关的帐户下 由用户角色决定的积垢 特定用户将有权访问单个项目 下面是为了演示而简化的模式模型示例 UserSchema.js: const UserSchema = new mongoose.Schema({ email: { type: Stri
- 用户具有特定的角色
- 由用户角色决定的积垢
- 特定用户将有权访问个人帐户。我想添加一个用户id为的数组用户组
- 嵌套在与单个accountToken ID相关的帐户下
- 由用户角色决定的积垢
- 特定用户将有权访问单个项目
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: [true, 'Please add an email'],
unique: true,
},
role: {
type: String,
enum: ['admin', 'user'],
default: 'user'
}
});
module.exports = mongoose.model('User', UserSchema);
const AccountSchema = new mongoose.Schema({
accountName: {
type: String,
},
accountToken: {
type: String
}
});
module.exports = mongoose.model('Account', AccountSchema);
const ProjectSchema = new mongoose.Schema({
projectName: {
type: String,
},
projectType: String,
projectToken: String
})
module.exports = mongoose.model('Project', ProjectSchema);
AccountSchema.js:
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: [true, 'Please add an email'],
unique: true,
},
role: {
type: String,
enum: ['admin', 'user'],
default: 'user'
}
});
module.exports = mongoose.model('User', UserSchema);
const AccountSchema = new mongoose.Schema({
accountName: {
type: String,
},
accountToken: {
type: String
}
});
module.exports = mongoose.model('Account', AccountSchema);
const ProjectSchema = new mongoose.Schema({
projectName: {
type: String,
},
projectType: String,
projectToken: String
})
module.exports = mongoose.model('Project', ProjectSchema);
ProjectSchema.js:
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: [true, 'Please add an email'],
unique: true,
},
role: {
type: String,
enum: ['admin', 'user'],
default: 'user'
}
});
module.exports = mongoose.model('User', UserSchema);
const AccountSchema = new mongoose.Schema({
accountName: {
type: String,
},
accountToken: {
type: String
}
});
module.exports = mongoose.model('Account', AccountSchema);
const ProjectSchema = new mongoose.Schema({
projectName: {
type: String,
},
projectType: String,
projectToken: String
})
module.exports = mongoose.model('Project', ProjectSchema);
我一直在寻找建立嵌套或子文档模式关系的最佳方法,以及相互关联数据的最佳方法。任何指导和建议都将是巨大的帮助!谢谢 试试这个
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: [true, 'Please add an email'],
unique: true,
},
role: {
type: String,
enum: ['admin', 'user'],
default: 'user'
}
});
module.exports = mongoose.model('User', UserSchema);
const AccountSchema = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'User'
},
accountName: {
type: String,
},
accountToken: {
type: String
}
});
module.exports = mongoose.model('Account', AccountSchema);
const ProjectSchema = new mongoose.Schema({
accountTokenId:{
type: String
},
projectName: {
type: String,
},
projectType: String,
projectToken: String
})
module.exports = mongoose.model('Project', ProjectSchema);
谢谢@joshua oweipadei。最后,我将项目架构嵌套在帐户架构
projects:[ProjectSchema]
中,然后使用virtuals作为id。可能不是最好的,但目前它正在工作。