Итак, у меня есть 3 модели: Пользователь, Проекты и Задачи ...
, и я хочу показать на своей панели инструментов все задачи пользовательских проектов пользователя, который вошел в систему, но происходит следующее:когда я вошел как, например, «user1», он показывает все задачи из коллекции и как «user2» показывает также все задачи из коллекции ... и я хочу показать только задачи от пользователя, вошедшего в систему ..
Мой пользователь не содержит задач, только проекты, и я подумал, что могу использовать совокупный поиск для этого, но я не знаю, как его использовать, и я не знаю, является ли это лучшим способомсделать это
Модель пользователя:
let mongoose = require("mongoose");
let passportLocalMongoose = require("passport-local-mongoose");
let UserSchema = new mongoose.Schema({
username: String,
password: String,
companyname: String,
companyimageURL: String,
projects: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Project'
}]
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);
Модель проекта:
let mongoose = require("mongoose");
let projectSchema = new mongoose.Schema({
projectname: String,
typeofproject: String,
imageURL: String,
dateMonthFrom: String,
dateYearFrom: String,
dateMonthTo: String,
dateYearTo: String,
tasks: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Tasks'
}],
user: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}]
})
module.exports = mongoose.model('Project', projectSchema);
Задачи Модель:
let mongoose = require("mongoose");
let taskSchema = new mongoose.Schema({
tasktitle: String,
taskcomment: String,
project: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Project'
}]
})
module.exports = mongoose.model('Tasks', taskSchema);
на моем сервере :
exports.render_all_tasks = (req, res) => {
User.aggregate([
{
$lookup:{
from: 'projects',
localField: 'projects',
foreignField: 'tasks',
as: 'user'
}
}
]).exec((err) => {
if(err) {
console.log(err);
}
Task.find({}).populate('project').exec((err, tasks) => {
if(err) {
console.log(err);
}
res.send(tasks);
});
});
};
коллекция пользователей:
{
_id: ObjectId("..."),
projects: [ 0: ObjectId("..."), 1: ObjectId("...")],
username: "user1",
companyname: "company1",
companyimageURL: "..."
}
коллекция проектов:
{
_id: ObjectId("..."),
tasks: [ 0: ObjectId("..."), 1: ObjectId("...")],
user: [ 0: ObjectId("...")],
projectname: "project1",
typeofproject: "type1",
imageURL: "..."
}
коллекция задач:
{
_id: ObjectId("..."),
project: [ 0: ObjectId("..."),
tasktitle: "Task 1"
}