Пн goose Опубликовать массив объектов по id - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь отправить объект JSON на свой Node.js бэкэнд и сохранить данные в MongoDB. У меня есть модель типа продукта, в которой есть вложенный документ поставщиков. Я хочу отправить идентификаторы поставщиков в продукте JSON, и Node принесет мне поставщиков, которые у меня уже есть в моей базе данных.

Это моя модель Node

var mongoose = require ('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
var Proveedor = require('../models/proveedor');

var Schema = mongoose.Schema;

var productoSchema = new Schema ({ 
    nombre :{ type : String, required : [true, 'El nombre es necesario'] },
    descripcion :{ type: String, required: [true, 'La descripcion es necesaria']},
    img :  {type: String, required:false},
    stock : {type : String, required : [true, "El stock es necesario"]},
    precio : {type: String, required : [true, " El precio es necesario"]},
    proveedor:{
    type: Schema.Types.ObjectId,
    ref:'Proveedor',
    //required: [true, "el id del proveedor es requerido"]
}

    /*type: Schema.Types.ObjectId,
        ref:'Proveedor',
        required: [true, "el id del proveedor es requerido"],
        //required: [true, "el nombre del proveedor es requerido"] */
        
}, {collection : 'productos'});

productoSchema.plugin(uniqueValidator, { message: 'debe ser único' });

module.exports  = mongoose.model('Producto', productoSchema); 

и это - это JSON, которое вы должны получить

{
            "_id": "5f1ca00e75f5ae1a0c1f1008",
            "nombre": "Minitor",
            "descripcion": "24' ",
            "img": "null",
            "stock": "1",
            "precio": "5000 $",
            "__v": 0,
            "proveedor": [
                {
                "_id": "5f1b6043c142eb1b685de68b"
            },
            {
                "_id": "5f1b6013c142eb1b685de68a"
            }
            ]
        }

, и управляется express сообщением конечной точки

app.post('/', mdAutenticacion.verificaToken, (req, res) => {

    var body = req.body;
    
    var producto = new Producto({
        nombre: body.nombre,
        descripcion: body.descripcion,
        img: body.img,
        stock: body.stock,
        precio: body.precio,
        proveedor: body.proveedor,
    });
    producto.save((err, productoGuardado) => {
        if (err) {
            return res.status(400).json({
                ok: false,
                mensaje: 'Error al generar producto',
                errors: err
            });
        }
        res.status(200).json({
            ok: true,
            producto: productoGuardado,
            productoToken: req.producto
        });
    });

  
});

Но когда я отправляю идентификаторы поставщиков, он не создает вложенные документы с двумя поставщиками и их данными

Мне нужно, чтобы при отправке идентификаторов они приносили мне поставщиков, которые у меня есть в базе данных, со всеми их данными, что-то вроде этого ...

{
            "_id": "5f1ca00e75f5ae1a0c1f1008",
            "nombre": "Monitor",
            "descripcion": "24' ",
            "img": " ",
            "stock": "1",
            "precio": "5000",
            "__v": 0,
            "proveedor": [
                {
                "_id": "5f1b6043c142eb1b685de68b",
                 "nombre": "Marcelo",
                "direccion": "Ituzaingo",
                 "cuit": "123456789212",
                "email": "Marcelo@gmail.com",
                "telefono": "123456789121",
                "situacion_afip": "Proveedor 2"
            },
            {
                "_id": "5f1ef5162f662d1ae768666b",
                "nombre": "Andre",
                "direccion": "Ituzaingo",
                "cuit": "9191919",
                "email": "Andre@gmail.com",
                "telefono": "919191191",
                "situacion_afip": "Proveedor 3"
        }
            ]
        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...