如何在猫鼬数组内推子文档?

时间:2020-03-29 16:55:07

标签: javascript arrays node.js express mongoose

我正在尝试在主题内添加一系列步骤。但是每次我发布请求时。它只存储一个带有_id的空数组。 这是我的模特:

const mongoose = require('mongoose');
//const Step = require('./Step');

const StepSchema = mongoose.Schema({
    title: String,
    status: String,
    date: {
        type: Date,
        default: Date.now
    }
});

const TopicSchema = mongoose.Schema({
    name: String,
    description: String,
    steps: [StepSchema],
    date: {
        type: Date,
        default: Date.now
    }
});

module.exports = mongoose.model('Topic', TopicSchema);

这是我的router.js:

const express = require('express');
const router = express.Router();
const Topic = require('../models/Topic');

router.post('/', async (req, res) => {
    const topic = new Topic({
        name: req.body.name,
        description: req.body.description,
    });
    topic.steps.push({
        title: req.body.title,
        status: req.body.status
    })
    try {
        const saveTopic = await topic.save();
        res.json(saveTopic);
    } catch (err) {
        res.json({ message: err });
    }
});

module.exports = router;

这是我的邮递员要求:

{
    "name": "t",
    "description": "y",
    "steps": {
        "title": "a",
        "status": "b"
    }
}

谢谢。

1 个答案:

答案 0 :(得分:0)

在您的POSTMAN请求中,标题和状态包含在steps对象中。

您需要这样做:

topic.steps.push({
    title: req.body.steps.title,
    status: req.body.steps.status
});

代替:

topic.steps.push({
    title: req.body.title,
    status: req.body.status
});