Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

order.js 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const mongoose = require('mongoose');
  2. const validator = require('validator');
  3. const Product = require('./product');
  4. const OrderSchema = new mongoose.Schema({
  5. products: [Product],
  6. time: {
  7. type: Date,
  8. required: [true, 'Please provide a date.'],
  9. validate(value) {
  10. if (!validator.isDate(value)) {
  11. throw new Error('Not a date');
  12. }
  13. },
  14. },
  15. shippingAddress: {
  16. country: {
  17. type: String,
  18. required: [true, 'Please provide a country.'],
  19. trim: true,
  20. },
  21. city: {
  22. type: String,
  23. required: [true, 'Please provide a city.'],
  24. trim: true,
  25. },
  26. address: {
  27. type: String,
  28. required: [true, 'Please provide an address.'],
  29. trim: true,
  30. },
  31. address2: {
  32. type: String,
  33. trim: true,
  34. },
  35. postcode: {
  36. type: String,
  37. required: [true, 'Please provide a postal code.'],
  38. },
  39. },
  40. totalPrice: {
  41. type: Number,
  42. required: [true, 'Please provide a total price.'],
  43. validate(value) {
  44. if (value < 0) {
  45. throw new Error('Total price must be a postive number');
  46. }
  47. },
  48. },
  49. numberOfItems: {
  50. type: Number,
  51. required: [true, 'Please provide a total number of items.'],
  52. validate(value) {
  53. if (value < 0) {
  54. throw new Error('Number of items must be a postive number');
  55. }
  56. },
  57. },
  58. fulfilled: {
  59. type: Boolean,
  60. default: false,
  61. },
  62. owner: {
  63. type: mongoose.Schema.Types.ObjectId,
  64. required: [true, 'Please provide an owner.'],
  65. ref: 'User',
  66. },
  67. stripeCheckoutId: {
  68. type: String,
  69. required: [true, 'Please provide a stripe checkout id.'],
  70. unique: [true, 'Stripe checkout id id must be unique.'],
  71. },
  72. });
  73. const Order = mongoose.models.Order || mongoose.model('Order', OrderSchema);
  74. module.exports = Order;