猫鼬按ID发布对象数组

时间:2020-08-02 20:39:08

标签: node.js mongodb mongoose

我正在尝试将JSON对象发送到我的Node.js后端,并将数据保留在MongoDB中。 我有一个带有供应商子文档的产品类型模型。 我想在产品JSON中发送供应商ID,并让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"
            }
            ]
        }

并由快速终点站帖子

管理
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时,它不会生成包含两个供应商及其数据的子文档

我需要在发送ID时,将他们在数据库中拥有的提供程序以及所有数据带给我,就像这样...

{
            "_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"
        }
            ]
        }

0 个答案:

没有答案