Опубликовать вставить несколько данных с помощью экспресс-JS и Mongodb - PullRequest
1 голос
/ 20 апреля 2019

Я пытаюсь вставить данные в mongodb, используя экспресс в формате, как показано ниже, что я не могу достичь.Мне нужно ввести несколько продуктов и серийный номер в поле данных.пожалуйста, помогите!

[
    {
        "_id": "5cbabbd7545ac20f7c912e6a",
        "refno1": "REF1",
        "refno2": "REF2",
        "prodregdate": "2019-04-09T00:00:00.000Z",
        "data": [
            {
                "_id": "5cbabbd7545ac20f7c912e6b",
                "product": "5cb86b45cfafaa1860e29b2a",
                "serialno": "s123"
            },
            { // this data im not able to enter how to do it
                "_id": "5cbabbd7545ac20f7c912e6b",
                "product": "5cb86b45cfafaa1860e29b2a",
                "serialno": "s123"
            },
        ],
        "customer": {
            "_id": "5c98bb0a42207b16d8fbd3cf",
            "customername": "Raghav Update"
        },
        "customertype": {
            "_id": "5c7a1a1d4913fa08ac75c027",
            "customertype": "Government "
        },
        "__v": 0
    }
]

// Моя схема

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;

    const ProductRegistrationSchema = new Schema({
        //Product Details
        _id: { type: mongoose.Schema.Types.ObjectId },
        refno1: { type: String },
        refno2: { type: String },
        data: [{
            product: {
                type: mongoose.Schema.Types.ObjectId,
                ref: "product"                      
            },
             //DATES
            //OEM
            oemwarrantyfrom: { type: Date },
           oemwarrantyto: { type: Date },
           //SERVICE PROVIDER
           warrantyfrom: { type: Date },
           warrantyto: { type: Date },
           serialno: { type: String },    
        }],

        prodregdate: { type: Date },
        //Details of Customer buying the product
        customer: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "customer" 
        },
        customertype: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "customertype" 
        },
        department: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "customersubdepartment" 
        },
         remarks: { type: String },
        entrydate: {
            type: Date,
            dafault: Date.now
        } 

module.exports = ProductRegistration = mongoose.model('productregistration', ProductRegistrationSchema);

// Мои маршруты только для добавления

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');

const Product = require("../../../models/Master/Products");
//importing the model of ProductRegistrationSchema
const ProdReg = require('../../../models/Entries/ProductRegistration');

//Creating a new ProductRegistration Data
router.post('/add', (req, res)=>{
    const newProdReg = new ProdReg({
        _id: new mongoose.Types.ObjectId(),
        refno1: req.body.refno1,
        refno2: req.body.refno2,
        prodregdate: req.body.prodregdate,
        data: {
          product: req.body.productid,
          oemwarrantyfrom: req.body.oemwarrantyfrom,
          oemwarrantyto: req.body.oemwarrantyto,
          warrantyfrom: req.body.warrantyfrom,
          warrantyto: req.body.warrantyto,
          serialno: req.body.serialno,
        },
        customer: req.body.customerid,
        customertype: req.body.customertypeid,
        department: req.body.customersubdepartmentid,
        remarks: req.body.remarks
        // deliverydate: req.body.deliverydate,
        // address: req.body.address,
        // assignedto: req.body.employeesid,
        // warrantyprovider: req.body.serviceproviderid,
        // oemwarrantyprovider: req.body.oemcompanyid,
        // warrantystartdate: req.body.warrantystartdate,
        // warrantyexpiredate: req.body.warrantyexpiredate,


    });
     newProdReg.save().then(prodreg => res.json(prodreg));

});

я не могу ввести 2 продукта и серийный номернет в поле данных.Входит один.

1 Ответ

1 голос
/ 20 апреля 2019

Сначала сделайте запрос JSON в правильном формате, если вы хотите вставить два продукта, которые вы получаете из данных запроса.

Например, ваш запрос JSON должен быть в текущем формате:

{"refno1":"x", "refno2": "y", "prodregdate": "2019-04-19T18:30:00.000Z","data": [{"product": "product_1_object_id","oemwarrantyfrom":"2019-04-19T18:30:00.000Z", "oemwarrantyto": "2019-04-19T18:30:00.000Z","warrantyfrom":"2019-04-19T18:30:00.000Z", "warrantyto":"2019-04-19T18:30:00.000Z","serialno":"123" },{"product": "product_2_object_id","oemwarrantyfrom":"", "oemwarrantyto": "2019-04-19T18:30:00.000Z","warrantyfrom":"2019-04-19T18:30:00.000Z", "warrantyto":"2019-04-19T18:30:00.000Z","serialno":"456" }],"customersubdepartmentid":"departement_object_id","customerid":"customer_object_id","customertypeid":"customer_type_object_id","remarks":"anything"}

Если вы используете POSTMAN, вы можете попробовать этот JSON в опции «raw».

Тогда в вашем коде это должно быть так:

router.post('/add', (req, res)=>{
    const newProdReg = new ProdReg({
        _id: new mongoose.Types.ObjectId(),
        refno1: req.body.refno1,
        refno2: req.body.refno2,
        prodregdate: req.body.prodregdate,
        data: req.body.data,                      // This will be type array with two products details
        customer: req.body.customerid,
        customertype: req.body.customertypeid,
        department: req.body.customersubdepartmentid,
        remarks: req.body.remarks
    });
     newProdReg.save().then(prodreg => res.json(prodreg));

});

Пожалуйста, сопоставьте ваш параметр запроса с JSON, я взял его из вашей схемы.

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