Вставка массива в Mongo с использованием Mongoose не работает - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь создать документ Mongo, но вставка в массив элемента orderProducts документа не работает.

Это метод для создания заказа и вставки в Mongo:

exports.createOrder = function(req, res) {

    var delivery = JSON.parse(req.body.delivery);
    var payment = JSON.parse(req.body.payment);
    var orderProducts = JSON.parse(req.body.orderItems);

    console.log('delivery', delivery)
    console.log('payment', payment)
    console.log('orderProducts', orderProducts);

    var newOrder = new Order({delivery, payment, orderProducts});
   // newOrder.orderProducts.push(orderProducts);

    console.log('new order', newOrder)

    res.json({'a':'b'})
}

После анализа данных с этим сегментом кода:

var delivery = JSON.parse(req.body.delivery);
var payment = JSON.parse(req.body.payment);
var orderProducts = JSON.parse(req.body.orderItems);

Я получаю ожидаемые результаты:

delivery:
 { firstName: 'fasdfasdf',
   lastName: 'dfasdas',
   email: 'asdfdfs@a',
   phone: 'addafdafd',
   shippingAddress: 'fasdfasdf',
   cityState: 'Brighton, MA',
   deliveryDate: 2018-04-06T00:00:00.000Z }

 payment:
  { paymentType: 'PayPal',
    cardNumber: 'fdasasdfdfaf',
    creditCardMonth: '11 - November',
    creditCardYear: '2028',
    cws: 'afd' },

orderProducts [ { productId: '596161e1734d1d25634366ce', quantity: 1 },
  { productId: '596269eb734d1d256343976a', quantity: 1 },
  { productId: '5962a556734d1d256343a210', quantity: 1 } ]

Но когда я создаю документ Mongo, используя этот сегмент кода:

var newOrder = new Order({delivery, payment, orderProducts});

Элементы доставки и оплаты newOrder являются правильными, как показано выше, но для orderProducts данные отсутствуют. Я получаю только следующее:

orderProducts:
 [ { _id: 5ae5cb11dba7821f1840475f },
   { _id: 5ae5cb11dba7821f1840475e },
   { _id: 5ae5cb11dba7821f1840475d } ]

Это модель Mongoose для заказа:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var DeliverySchema = new Schema({
    firstName: String,
    lastName: String,
    email: String,
    phone: String,
    shippingAddress: String,
    cityState: String,
    zip: String,
    deliveryDate: Date,
    deliveryInstruction: String,
    useAsBillinAddress: Boolean
}, {_id: false});
mongoose.model('Delivery', DeliverySchema);

var PaymentSchema = new Schema({
    cardNumber: String,
    creditCardYear: String,
    creditCardMonth: String,
    cws: String,
    paymentType: String
}, {_id: false})
mongoose.model('Payment', PaymentSchema);

var OrderProductSchema = new Schema({
    id: String,
    qty: Number
}, {_id: false});
mongoose.model('OrderProduct', OrderProductSchema);

var OrderSchema = new Schema({
    delivery: DeliverySchema,
    payment: PaymentSchema,
    orderProducts: [{OrderProductSchema}],
    timestamp: {type: Date, default: Date.now}    
});

var Order = mongoose.model("Order", OrderSchema, "order");
module.exports = Order;

Как вставить массив в документ?

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