Модели раскроя в пн goose js - PullRequest
0 голосов
/ 14 апреля 2020

Сейчас я работаю в проекте магазина, и у меня есть вопрос, связанный с моделями и схемами в понедельник goose js и как их использовать в нашем проекте.

Заказ Модель

В CartItemSchema я также ссылаюсь на продукт и магазин

В OrderSchema я ссылаюсь на CartItemSchema

const mongoose = require('mongoose');

const CartItemSchema = new mongoose.Schema({
  product: [{ type: mongoose.Schema.ObjectId, ref: 'Product' }], <-- Product Schema
  quantity: Number,
  shop: [{ type: mongoose.Schema.ObjectId, ref: 'Shop' }],       <-- Shop Schema
  status: {
    type: String,
    default: 'Not processed',
    enum: ['Not processed', 'Processing', 'Shipped', 'Delivered', 'Cancelled']
  }
});

const OrderSchema = new mongoose.Schema({
  products: [CartItemSchema],                   <-- CartItemSchema Schema
  customer_name: {
    type: String,
    trim: true
  },
  customer_email: {
    type: String,
    trim: true,
    match: [/.+.+\..+/, 'Please fill a valid email address']
  },
  deliveryAddress: {
    street: { type: String, required: 'Street is required' },
    city: { type: String, required: 'City is required' },
    state: { type: String, required: 'State is required' },
    zipcode: { type: String, required: 'Zip Code is required' },
    country: { type: String, required: 'Country is required' }
  },
  payment_id: {},
  updated: Date,
  created: {
    type: Date,
    default: Date.now
  },
  user: { type: mongoose.Schema.ObjectId, ref: 'User' }
});


const Order = mongoose.model('Order', OrderSchema);

module.exports = Order;

Создать контроллер заказов

exports.createOrder = asyncMiddleware(async (req, res, next) => {
  const order = new Order({
    user: req.user,
    deliveryAddress: req.body.deliveryAddress,
    products: req.body.products,               <-- referencing the products in OrderSchema
    customer_name: req.body.customer_name,
    customer_email: req.body.customer_email
  });

  order.save((err, result) => {
    if (err) {
      return next(new ErrorResponse(err, 400));
    }
    res.status(200).json(result);
  });
});

однако мой вопрос , когда я создаю новый заказ в соответствии с полями, которые я указываю в Модель заказа, Как я могу ссылаться на поле продуктов, Пока что я сделал что-то вроде этого ...

products: req.body.products,

Но это не работает должным образом, и я могу получить только ObjectId для продукта и ObjectId для магазина это пустой массив.

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