【发布时间】:2023-03-24 17:48:01
【问题描述】:
我正在尝试弄清楚如何构建我的猫鼬模型。我有一个用户模型、一个任务模型和一个项目模型。项目将有用户,每个用户都有针对该特定项目的任务。我进行此设置的方式是 User 模型具有对 Project 模型的架构引用,而 Task 模型具有对用户的架构引用。我怎样才能做到这一点,以便在我呈现检索到的信息时,每个项目都将显示其相关成员,并且每个成员都将拥有针对该特定项目的相关任务。我还有一个用户模型的管理属性,它只是一个布尔值,默认设置为 false。这样做的目的是,当用户创建团队时,Admin 属性将设置为 True,从而允许管理员为管理员创建的项目中的用户设置任务。问题是,在用户创建团队后,如果管理员设置为 true,我的前端的三元条件将显示基于“管理员”属性的布尔值的表单输入对于所有项目,即使是用户不是管理员的项目。
我正在使用 React 进行渲染。
//任务模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TodoSchema = new Schema({
task: {
type: String
},
userTasks: [{
type: Schema.Types.ObjectId,
ref: "User"
}]
});
var Task = mongoose.model('Task', TodoSchema);
module.exports = Task;
//用户模型
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var UserSchema = new Schema({
name: {
type: String,
trim: true,
required: "First Name is Required"
},
username: {
type: String,
trim: true,
required: "Username is Required"
},
skills: {
type: String,
trim : true
},
avatar: {
type: String
},
SQLid: {
type: Number
},
userCreated: {
type: Date,
default: Date.now
},
lastUpdated: {
type: Date
},
userAdmin: {
default: false
},
adminTeams: [{
type: Schema.Types.ObjectId,
ref: "Team"
}],
team: [{
type: Schema.Types.ObjectId,
ref: "Team"
}],
task: [{
type: Schema.Types.ObjectId,
ref: "Task"
}]
});
var User = mongoose.model("User", UserSchema);
// Export the model so the server can use it
module.exports = User;
//项目模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TeamSchema = new Schema({
teamname: {
type: String,
trim: true,
required: "Team Name is Required"
},
description: {
type: String
},
tech: {
type: String
},
teamMembers: [{
type: Schema.Types.ObjectId,
ref: "User"
}]
});
var Team = mongoose.model('Team', TeamSchema);
module.exports = Team;
一旦用户创建团队/项目,他们就会成为该创建团队的管理员。管理员有权将任务分配给用户,用户可以属于多个团队。我正在考虑将管理员布尔值移至 Projects/Team 模型,并在创建团队后将该属性赋予用户的 _id,然后我将使用这些作为键来匹配并使用三元组来呈现表单(如果他们是项目)观看是他们创造的。但是,我仍然对如何将每个用户与任务相关联感到困惑,并且用户可以属于多个团队,因此我需要用户必须在正确的项目/团队部分中的任务。
我在说什么
//项目页面(下面的 div 只是项目页面上列出的众多项目中的一个)
<div>
Project/Team 1
User Name -> User Task
User Name -> User Task
User Name -> User Task
...
</div>
<div>
Project/Team 2
User Name -> User Task
User Name -> User Task
User Name -> User Task
...
</div>
【问题讨论】: