我有这个架构:
const SingleExerciseSchema = new Schema({
exerciseName: { type: String },
setLog: [{
weight: { type: Number },
sets: { type: Number },
reps: { type: Number },
}],
});
然后我得到这样的数据,作为 json:
const DATA = [
{ exerciseName: "Squat",
setLog: [
{weight: 65, sets: 1, reps: 5},
{weight: 55, sets: 2, reps: 5},
{weight: 45, sets: 1, reps: 5},
]
},
{ exerciseName: "Overhead Press",
setLog: [
{weight: 27.5, sets: 1, reps: 5}
]
}
];
我想循环数据并从中创建我的 SingleExercise 对象。
像这样:
const exerciseObjectList = (req.body).map(
(exerciseLog) => new SingleExercise({
exerciseName: req.body.exerciseName,
setLog: // stuck here
})
但是,我不确定是否更新/访问 setLog 字段(语法方面)。我想要这样的东西:
const exerciseObjectList = (req.body).map(
(exerciseLog) => new SingleExercise({
exerciseName: req.body.exerciseName,
setLog: {
(req.body.setLog).map(
(set) => {
weight: set.weight,
sets: set.sets,
reps: set.reps,
}
)
}
})
);
但这显然是错误的语法。
编辑:我的代码中实际上有一个愚蠢的错误,我在循环中编写了 req.body.exerciseName 而不是exerciseName。 另外,我刚刚去了
setLog: exerciseLog.setLog
并且它可以工作(而不是单独访问 setLog 中的每个字段)。 我仍然不知道如何单独访问每个字段,但现在我不需要这样做。
固定代码:
const exerciseObjectList = (req.body).map(
(exerciseLog) => new SingleExercise({
exerciseName: exerciseLog.exerciseName,
setLog: exerciseLog.setLog,
}));
最佳答案
我相信您可以映射 req.body 并在每个 new SingleExercise
const exerciseObjectList = req.body.map(exercise => new SingleExercise(exercise))
关于javascript - MongoDB:如何创建一个具有对象数组作为字段的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76710120/