Как передать ObjectId в запрос POST? - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь установить связь One-To-Many между двумя таблицами (таблицами групп и перемещений), используя node js (Express) и mon go DB. У меня уже есть group Id, исходящий из таблицы групп на моей стороне, мой вопрос, как я могу сохранить движение ( см. Пункт 3 ) с тем, что у меня есть group Id. Я попытался передать groupId: req.body.group._id и groupId: req.body.group, но мне не удалось заполнить эту переменную

Это две сущности, которые я создал:

1) GROUP ENTITY

const mongoose = require("mongoose")

const GroupSchema = mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    limit: {
        type: String,
        required: true
    },

    date: {
        type: Date,
        default: Date.now
    },
    movement: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Movement' }],
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
})

module.exports = mongoose.model("Group", GroupSchema)

2) СУЩНОСТЬ ДВИЖЕНИЯ

const mongoose = require("mongoose")

const MovementSchema = mongoose.Schema({
    description: {
        type: String,
        required: true
    },
    value: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    },
    group: { type: mongoose.Schema.Types.ObjectId, ref: 'Group' }
})

module.exports = mongoose.model("Movement", MovementSchema)

Это мой маршрутизатор движения, на котором я делаю конечные точки ( Фактическая проблема здесь )

3) MovementRoute

const router = require('express').Router();
const verify = require('./verifyToken');
const User = require('../model/User');
const Group = require('../model/Group');
const Movement = require('../model/Movement');

// Create Movement
router.post('/', verify, async (req, res) => {
    const post = new Movement({
        description: req.body.description,
        value: req.body.value,
        groupId: req.body.group._id //**tried this**
    });

    try {
        const savedMovement = await post.save()
        res.status(200).send(res.json({ data: savedMovement }));
    } catch (error) {
        res.status(400).send(res.json({ message: error }));
    }
});

module.exports = router;

Запрос отправлен

{
    "description":"group1",
    "value":"233",
    "group":"5e506f3c56233d08f79bc8f3"
}

1 Ответ

1 голос
/ 22 февраля 2020

Если console.log(req.body) дает вам это:

{ 
    description: 'group1', 
    value: '233', 
    group: '5e506f3c56233d08f79bc8f3' 
}

.. вы должны быть в состоянии сделать это:

router.post('/', verify, async (req, res) => {
    console.log(req.body) // --> { description: 'group1', value: '233', group: '5e506f3c56233d08f79bc8f3' } 

    const post = new Movement({
        description: req.body.description,
        value: req.body.value,
        groupId: req.body.group
        // groupId: req.body.group._id //**tried this**
    });

    try {
        const savedMovement = await post.save()
        res.status(200).send(res.json({ data: savedMovement }));
    } catch (error) {
        res.status(400).send(res.json({ message: error }));
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...