【发布时间】:2021-11-19 23:42:00
【问题描述】:
当我从客户端创建新架构时,我不知道如何将数据添加到猫鼬子文档。发送到数据库的唯一数据是未嵌套在另一个模式/数组中的数据。
我使用 MongoDB 和 Mongoose 作为我的数据库和 NextJS 作为我的前端和后端。
我还没有找到一种方法来让它工作。任何帮助将不胜感激。
这是后端路由:
export default async (req, res) => {
const { method } = req;
switch (method) {
case "POST":
try {
const workout = req.body;
const newWorkout = new Workout({ ...workout });
await newWorkout.save();
res.status(201).json({ success: true, data: newWorkout });
} catch (error) {
res.status(400).json({ success: false });
}
break;
这是猫鼬模式:
import mongoose from "mongoose";
const reqString = {
type: String,
required: true,
};
const WodSchema = new mongoose.Schema({
exerciseName: reqString,
repCount: reqString,
});
const exerciseSchema = new mongoose.Schema({
workoutName: String,
workoutContent: [WodSchema],
});
const WorkoutSchema = new mongoose.Schema({
name: { type: String },
workout: [exerciseSchema],
// timestamps: true,
});
module.exports =
mongoose.models.Workout || mongoose.model("Workout", WorkoutSchema);
这是前端发布请求(只有name 被发送到数据库):
const [name, setName] = useState("");
const [workoutName, setWorkoutName] = useState("");
const [exerciseName, setExerciseName] = useState("");
const editProgram = async () => {
try {
const res = await fetch(`http://localhost:3000/api/workouts/`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({ name, workoutName, exerciseName }),
});
} catch (error) {
console.log(error);
}
};
【问题讨论】:
-
workout是一个子文档数组,您需要在new Workout()中相应地格式化您传递给它的数据。 -
你有什么例子吗?
标签: javascript node.js mongodb mongoose next.js