【发布时间】:2021-01-22 16:52:14
【问题描述】:
我正在使用 merng 堆栈创建一个应用程序,它允许用户将他们为锻炼所做的一组记录到他们的帐户中。我目前正在研究猫鼬模式,并且有两个非常相似的模式,Workout 和 Exercise。
models/Workout.js
const { model, Schema } = require("mongoose");
const workoutSchema = new Schema({
workoutName: String,
username: String,
createdAt: Number,
exercises: [
{
exerciseName: String,
sets: [
{
weight: Number,
reps: Number,
createdAt: Number,
notes: String
}
]
}
],
notes: String
});
module.exports = model("Workout", workoutSchema);
models/Exercise.js
const { model, Schema } = require("mongoose");
const exerciseSchema = new Schema({
exerciseName: String,
username: String,
sets: [
{
weight: Number,
reps: Number,
createdAt: Number,
notes: String
}
]
});
module.exports = model("Exercise", exerciseSchema);
锻炼文档将仅包含一系列锻炼和锻炼期间记录的组(每次锻炼限制为 4 小时)。练习文档将包含用户在使用应用程序时记录的所有集合的数组。我面临的问题是,每当使用他们以前做过的练习创建一个新的锻炼文档时,它都会为该练习创建一个新的 ID,而不是与练习文档中的 ID 相同。我希望锻炼文档能够识别已经存在的锻炼 ID(如果之前已记录)。
经过研究,我认为我需要参考练习模式。但是,即使有关于 SO 的答案,我仍然不确定如何通过我的项目实现这一目标。
【问题讨论】: