Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. export async function postCheckout(req, res, next) {
  2. if (!req.session.cart) {
  3. return res.redirect('/cart');
  4. }
  5.  
  6. let cart;
  7. let order;
  8. let post;
  9.  
  10. const apiConfig = {
  11. timeout: 1000,
  12. headers: { 'Content-Type': 'application/json' },
  13. auth: {
  14. username: config.remoteApiLogin,
  15. password: config.remoteApiPassword,
  16. },
  17. };
  18.  
  19. try {
  20. cart = await new Cart(req.session.cart);
  21. } catch ({ message }) {
  22. return next({
  23. status: 500,
  24. message,
  25. });
  26. }
  27.  
  28. try {
  29. order = await new Order({
  30. user: req.user,
  31. cart,
  32. });
  33. } catch ({ message }) {
  34. return next({
  35. status: 500,
  36. message,
  37. });
  38. }
  39.  
  40. // Сохраняем заказ в БД
  41. try {
  42. await order.save();
  43. } catch ({ message }) {
  44. return next({
  45. status: 500,
  46. message,
  47. });
  48. }
  49.  
  50. /* Забираем последний заказ из БД
  51. * Почему забираем заказ из БД, а не сразу массив order постим в 1С?
  52. * Дело в том, что нам важен ID который присвоится заказу при сохранении в базу.
  53. * Забрав данные о последнем заказе, мы получим и нужный нам ID-заказа (_id)
  54. */
  55. try {
  56. post = await Order.findOne({}, {}, { sort: { createdAt: -1 } });
  57. global.console.log(post);
  58. } catch ({ message }) {
  59. return next({
  60. status: 500,
  61. message,
  62. });
  63. }
  64.  
  65. // Отправляем данные в 1С
  66. try {
  67. await axios.post(config.postOrder, post, apiConfig);
  68. } catch ({ message }) {
  69. return next({
  70. status: 500,
  71. message,
  72. });
  73. }
  74.  
  75. req.session.cart = null;
  76.  
  77. return res.redirect('/user/profile');
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement