все еще новичок, немного смущенный всеми терминами, но очень рад любой помощи.
Я пытаюсь написать intr anet как учебный проект для воображаемой компании, в которой у каждого пользователя есть список задач. Сотрудник более высокого ранга должен иметь возможность отправлять задание из своего списка задач сотруднику более низкого ранга, а также иметь возможность делиться заданием с другими сотрудниками, так сказать, совместным заданием. У меня есть схема задач, подобная следующей:
var mongoose = require("mongoose");
var todoPointSchema = new mongoose.Schema({
title: String,
description: String,
done: {type: Boolean, default: false},
createdAt: {type: Date, default: Date.now},
deadline: String,
isDeviation: {type: Boolean, default: false},
deviation: {
type: mongoose.Schema.Types.ObjectId,
ref: "Deviation"
},
owners:
[
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
]
});
module.exports = mongoose.model("TodoPoint", todoPointSchema);
Эти задачи затем добавляются в массив в пользовательской схеме, как показано ниже:
var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var UserSchema = new mongoose.Schema({
firstName: String,
lastName: String,
phone: Number,
username: String,
created: {type: Date, default: Date.now},
position: [ {
type: mongoose.Schema.Types.ObjectId,
ref: "Position"
} ],
units: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Unit"
}
],
posts: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Post"
}
],
todoPoints: [
{
point: {
type: mongoose.Schema.Types.ObjectId,
ref: "TodoPoint"
},
sentBy: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
}
],
password: String,
picName: {type: String, default: "default.png"},
active: {type: Boolean, default: false},
firstTimeActivation: {type: Boolean, default: false},
showIntro: {type: Boolean, default: true}
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);
Проблема заключается в отображении внешнего интерфейса, который массив пуст, хотя кажется, что нет. Я попытался прочитать документацию mongodb, но не могу найти ничего подходящего. Кроме того, как я могу заполнить массив «sentBy» и «point»?
Я пытался выполнить задачу разными способами, последний из которых был таким:
app.post("/todoPoint/currentUser", isLoggedIn, function(req, res) {
TodoPoint.create(req.body.todoPoint, function(err, newTodoPoint) {
if(err){
console.log(err);
}else{
newTodoPoint.owners.push(req.user);
newTodoPoint.createdAt = dateFormat(newTodoPoint.createdAt, "isoDate");
if(req.body.todoPoint.deadline != ""){newTodoPoint.deadline = dateFormat(newTodoPoint.deadline, "isoDate");}
newTodoPoint.save();
User.findById(req.user._id, function(err, foundUser){
if(err){
console.log(err);
}else{
foundUser.todoPoints.push({point: newTodoPoint});
foundUser.save();
res.redirect("/");
}
});
}
});
});
Когда я проверяю коллекцию mongodb, она показывает следующее:
todoPoints: Array
0: Object
_id: ObjectId("5e9eec0654e9d02e2c5bd44b")
point: ObjectId("5e9efb51705514004cb8a8a9")
Извините за очень запутанное объяснение, если вам понадобится какая-либо другая информация, я выложу что-нибудь.