您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const Order = require('../../../models/order');
  2. import dbConnect from '../../../utils/helpers/dbHelpers';
  3. import { Types } from 'mongoose';
  4. import type { NextApiRequest, NextApiResponse } from 'next';
  5. import {
  6. OrderResponse,
  7. OrderDataDB,
  8. } from '../../../utils/interface/orderInterface';
  9. async function handler(
  10. req: NextApiRequest,
  11. res: NextApiResponse<OrderResponse>
  12. ) {
  13. const { method } = req;
  14. const ownerID = req.query.ownerID as string;
  15. await dbConnect();
  16. switch (method) {
  17. case 'POST': {
  18. try {
  19. const order: OrderDataDB = await Order.create(
  20. req.body
  21. ); /* create a new model in the database */
  22. res
  23. .status(201)
  24. .json({ message: 'Your order was submitted successfully!', order });
  25. } catch (error) {
  26. if (error instanceof Error)
  27. res.status(400).json({ message: error.message });
  28. else res.status(400).json({ message: 'Unexpected error' + error });
  29. }
  30. break;
  31. }
  32. case 'GET': {
  33. try {
  34. const objectId = new Types.ObjectId(ownerID);
  35. const orders: Array<OrderDataDB> = await Order.find({
  36. owner: objectId,
  37. });
  38. if (!orders) {
  39. res.status(200).json({
  40. message:
  41. 'There are currently no orders in our database for the selected owner.',
  42. orders: [],
  43. });
  44. }
  45. res.status(200).json({
  46. message:
  47. 'All orders from our database for the selected owner were fetched successfully.',
  48. orders,
  49. });
  50. } catch (error) {
  51. if (error instanceof Error)
  52. res.status(400).json({ message: error.message });
  53. else res.status(400).json({ message: 'Unexpected error' + error });
  54. }
  55. break;
  56. }
  57. default:
  58. res.status(405).json({ message: 'Method not allowed' });
  59. break;
  60. }
  61. }
  62. export default handler;