Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export async function postCheckout(req, res, next) {
- if (!req.session.cart) {
- return res.redirect('/cart');
- }
- let cart;
- let order;
- let post;
- const apiConfig = {
- timeout: 1000,
- headers: { 'Content-Type': 'application/json' },
- auth: {
- username: config.remoteApiLogin,
- password: config.remoteApiPassword,
- },
- };
- try {
- cart = await new Cart(req.session.cart);
- } catch ({ message }) {
- return next({
- status: 500,
- message,
- });
- }
- try {
- order = await new Order({
- user: req.user,
- cart,
- });
- } catch ({ message }) {
- return next({
- status: 500,
- message,
- });
- }
- // Сохраняем заказ в БД
- try {
- await order.save();
- } catch ({ message }) {
- return next({
- status: 500,
- message,
- });
- }
- /* Забираем последний заказ из БД
- * Почему забираем заказ из БД, а не сразу массив order постим в 1С?
- * Дело в том, что нам важен ID который присвоится заказу при сохранении в базу.
- * Забрав данные о последнем заказе, мы получим и нужный нам ID-заказа (_id)
- */
- try {
- post = await Order.findOne({}, {}, { sort: { createdAt: -1 } });
- global.console.log(post);
- } catch ({ message }) {
- return next({
- status: 500,
- message,
- });
- }
- // Отправляем данные в 1С
- try {
- await axios.post(config.postOrder, post, apiConfig);
- } catch ({ message }) {
- return next({
- status: 500,
- message,
- });
- }
- req.session.cart = null;
- return res.redirect('/user/profile');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement