Error de validación de la mongoose pero puse los documentos correctamente

Por favor, eche un vistazo a mi código. Estoy teniendo un error de validación pero estoy seguro de que coloco mis documentos en el formato correcto.

MI MODELO

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var orderSchema = new Schema({ userPurchased: { type: Schema.Types.ObjectId, ref: 'users' }, products: [ { product: { type: Schema.Types.ObjectId, ref: 'products' }, size: { type: String, required: true }, quantity: { type: Number, required: true }, subTotal: { type: Number, required: true } } ], totalQuantity: { type: Number }, totalPrice: { type: Number }, otherShipAd: { type: String }, modeOfPayment: { type: String }, paidStatus: {type: Boolean, default: false} }); module.exports = mongoose.model('orders', orderSchema); 

Mi ruta

 ordersRouter.route('/placeOrder') .post(function (req, res) { var body = req.body; console.log(req.body); var orderItem = { userPurchased: body.userId, products: [{ product: body._id, size: body.size, quantity: body.quantity, subTotal: body.subTotal }], totalQuantity: body.totalQuantity, totalPrice: body.totalPrice, otherShipAd: body.customAdd, modeOfPayment: body.modeOfPayment }; Orders.create(orderItem, function (err, result) { if (err) throw err; }); }); 

MI OBJETO DE JSON DEL POSTMAN

 { "userPurchased": "5887f303c58a953360fe2759", "products": [{ "product": "58466e8e734d1d2b0ceeae00", "size": "m", "quantity": 3, "subTotal": 1197 }, { "product": "58466e8e734d1d2b0ceeae00", "size": "l", "quantity": 3, "subTotal": 1197 }], "totalQuantity": 6, "totalPrice": 2394, "otherShipAd": "", "modeOfPayment": "BDO" } 

Por favor vea mi error en la stack introduzca la descripción de la imagen aquí

EDITAR: Resultado de req.body introduzca la descripción de la imagen aquí

¿Qué estoy haciendo mal aquí? Estoy atascado.

Estás cometiendo un error mientras creas un nuevo order . Mire el contents de req.body y mire lo que está pasando al objeto de orders .

Prueba esto:

 var orderItem = new Orders(); orderItem.userPurchased=body.userId; //for each products item, push it to orderItem.products body.products.forEach(function(product,index) { orderItem.products.push({ product: product.product, size: product.size, quantity: product.quantity, subTotal: product.subTotal }); }); orderItem.totalQuantity=body.totalQuantity; orderItem.totalPrice=body.totalPrice; orderItem.otherShipAd=body.customAdd; orderItem.modeOfPayment=body.modeOfPayment; Orders.save(function (err, result) { if (err) throw err; }); 

Parece que hiciste la misma pregunta sobre la matriz en otra publicación, debes evitar duplicar tus preguntas.

La respuesta es más corta: no tiene necesidad de procesar su pedido, ya que coincide con el esquema requerido de su modelo. Esto debería funcionar bien:

 ordersRouter.route('/placeOrder') .post(function (req, res) { Orders.create(req.body, function (err, result) { if (err) throw err; // send success message back }); });