首页 > 解决方案 > 如何在服务内部发布和填充待办事项(无关系数组)?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 数组中的每个内容?

标签: node.jsexpressmongoose

解决方案


如果您的 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}
  ]
}

推荐阅读