Итак, это то, что я изначально хочу сделать:
- Создайте стойку ворот с продолжительностью, которую я хочу занять, чтобы завершить ее.
- // Завершено
- Пример: Продолжительность: 4 часа
- Добавить прогресс в массив в исходной записи цели
- / / Завершено
- Пример: Ход выполнения: 1 час
Вычесть количество времени, введенное в форме прогресса, из общей продолжительности.
// Не завершено
Post: {
...,
{
duration: 4
},
progress: [
progress1: {
...,
{
hours: 1
}
},
progress2: {
...,
{
hours: 2
}
]
- Post total duration is updated to 3 as I want to subtract the "1" from hours spent working on a goal.
- Then when added another progress with hours of 2, to subtract that amount as well.
**Here's my PostSchema:**
`const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const PostSchema = new Schema({
// Reference to user model
creator: {
type: Schema.Types.ObjectId,
ref: "user"
},
title: {
type: String,
required: true
},
desc: {
type: String,
required: true
},
dura: {
type: Number,
required: true
},
from: {
type: Date
},
to: {
type: Date
},
completed: {
type: Boolean,
default: false
},
progress: [
{
user: {
type: Schema.Types.ObjectId,
ref: 'users'
},
text: {
type: String,
required: true
},
summary: {
type: String,
required: true
},
hours: {
type: Number,
required: true
},
date: {
type: Date,
default: Date.now
}
}
]
});
module.exports = Post = mongoose.model("post", PostSchema);
```
**Express Logic:**
```router.post(
"/progress/:id",
[
auth,
[
check("text", "Text is required")
.not()
.isEmpty()
]
],
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
try {
const user = await User.findById(req.user.id).select("-password");
const post = await Post.findById(req.params.id);
const newProgress = {
user: req.user.id,
text: req.body.text,
summary: req.body.summary,
hours: req.body.hours,
name: user.name
};
//--------------------------------------------------//
// Implement logic to subtract new Progress hours from Post overall hours
//--------------------------------------------------//
post.progress.unshift(newProgress);
await post.save();
res.json(post.progress);
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
}
);
`