Я пытаюсь обновить документ в базе данных mon go информацией из формы, когда вся форма входит в поле, являющееся массивом. В настоящее время я не могу заставить его обновить документ, только создать новый, но, что еще более важно, я не могу получить информацию из формы в массив.
Вот моя схема:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const WorkoutSchema = new Schema({
day: {
type: Date,
default: Date.now
},
exercises: [
{
type: String,
trim: true,
required: "Exercise type is required"
},
{
name: String,
trim: true,
required: "Exercise name is required"
},
{
duration: Number
},
{
weight: Number
},
{
reps: Number
},
{
sets: Number
},
{
duration: Number
},
{
distance: Number
}
]
});
const Workout = mongoose.model("Workout", WorkoutSchema);
module.exports = Workout;
А вот мой маршрут API. Я включил результаты console.logs ниже, чтобы вы могли видеть информацию, которая передается.
app.put("/api/workouts/:id", (req, res) => {
console.log("api body: " + JSON.stringify(req.body));
console.log("body is " + typeof req.body);
var body = JSON.stringify(req.body);
// body = body.split("{")[1];
// body = body.split("}")[0];
// body = "["+body+"]";
console.log(body);
Workout.create({exercises: `${body}`})
.then(Workout => {
res.json(Workout);
})
.catch(err => {
res.json(err);
});
});
тело API: {"тип": "сопротивление", "имя": "пробный пресс", "вес": 100, "наборы": 5, "повторений": 6, "продолжительность" ": 10}
тело является объектом
{" тип ":" сопротивление "," имя ":" пробный пресс "," вес ": 100," наборы ": 5," повторений ": 6," продолжительность ": 10}
В базе данных я получаю упражнения в виде массива с одним элементом - вышеуказанным объектом - вместо серии пар ключ / значение. Я много чего пробовал, но это настолько близко, насколько я понимаю, что я пытаюсь сделать.
Кто-нибудь может увидеть, где я ошибся?