Я пытаюсь создать документ 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;
Как вставить массив в документ?