node.js - 如何在服务内部发布和填充待办事项(无关系数组)?todos:没有关系嵌套数组。服务:模型的对象
问题描述
我正在尝试从集合“服务”中插入一个名为“服务”的文档。我想在服务对象中查看 todos,但我只看到 todo id。请你帮帮我好吗?
这是我的代码:
架构:
const mongoose = require("mongoose");
const { Schema } = mongoose;
const serviceSchema = new Schema({
name: String,
description: String,
pricePerHour: Number,
todos: [
{
name: String,
description: String,
isDone: Boolean
}
],
createdAt: Date,
updatedAt: Date
});
mongoose.model("services", serviceSchema);
那是我的邮政服务
app.post("/api/services", async (req, res) => {
const { name, description, pricePerHour, todos } = req.body;
const service = new Service({
name,
description,
pricePerHour,
todos: [
{
name: todos.name,
description: todos.description,
isDone: todos.isDone
}
]
});
try {
let newService = await service.save();
res.status(201).send(newService);
} catch (err) {
if (err.name === "MongoError") {
res.status(409).send(err.message);
}
res.status(500).send(err);
}
});
如您所见,我只看到每个服务中的 todos id。
那么,如何发布没有关系嵌套数组的服务并查看每个服务对象内 todos 数组中的每个内容?
解决方案
如果您的 req.body 结构与 Service 模型模式相同,则您在 post 路由中构造您的服务对象,如下所示:
const service = new Service({
name,
description,
pricePerHour,
todos
});
你的 req.body 必须像这样才能工作:
{
"name": "service 3",
"description": "maintenance",
"pricePerHour": 855,
"todos": [{ "name": "todo 1", "description": "description 1", "isDone": true },
{ "name": "todo 2", "description": "description 2", "isDone": false}
]
}
推荐阅读
- sql - 有什么方法可以模拟在 PL/SQL 中的语句触发器中使用行触发器的 :old 和 :new 的方式
- javascript - 由于组件破坏,角度计时器闪烁
- javascript - 如何减小 node_module 文件大小
- docker - Laradock 安装 PDFtk
- javascript - Electron 执行 powershell 脚本
- elm - Keyed Node 是否意味着与 Lazy 一起使用?
- mysql - 在 mysql 和 mssql 问题中运行的元组“not in”子句
- r - 意外行为 seq() 函数
- vue.js - 纱线在后台服务
- git - 我正在尝试使用 git bash 从本地存储库中删除我的文件“样式”。但是会显示以下错误。如何删除我的文件?