Node.js/Stripe API | Создание продукта не работает при использовании (ошибка, продукт)

#javascript #node.js #mongodb #express #stripe-payments

#javascript #node.js #mongodb #экспресс #stripe-платежи

Вопрос:

В настоящее время я пытаюсь создать новый продукт stripe с заданными деталями из данных формы, которые я буду вводить. До сих пор при создании продукта stripe он сообщал мне сведения о продукте в console.log (product) только в том случае, если я не использую раздел с комментариями, который я хотел бы иметь возможность использовать. Если я использую раздел с комментариями, то в нем будет указано, что product не определен, и я не могу передать неопределенный stripeID . Я также приму любые советы о коде в целом, поскольку я все еще учусь! Спасибо!

  //Product Create
        app.post('/products', async (req, res) => {
        
          // Creates New Stripe Product
          const product = await stripe.products.create({
            name: req.body.productName,
            images: [req.body.productImage]
            /*     }, 
                (err, newProduct) => {
                  if (err) {
                    console.log(err);
                  } else {
                    console.log(`New Stripe Product Created`);
                  }  */ 
          });

          console.log(product);
        
          // Creates product with stripe Id and adds it to Mongo DB
          Product.create({
              productName: req.body.productName,
              productDescription: req.body.productDescription,
              price: req.body.productPrice,
              img: req.body.productImage,
              stripeProductId: product.id
            },
            (err, newProduct) => {
              if (err) {
                console.log('product not added to mongo');
                console.log(err);
              } else {
                console.log('product created');
              }
            });
        
          res.send('New/Post Create New Product');
        });
  

Ответ №1:

Похоже, что вы используете 2 подхода, то await есть, а также обратные вызовы, при вызове этих методов.

  1. Вот как await должен выглядеть подход:
 const product = await stripe.products.create({
    name: req.body.productName,
    images: [req.body.productImage]
});
console.log("My product is" , product);
  
  1. И ваш подход к обратному вызову будет выглядеть иначе, вы будете регистрироваться newProduct внутри обратного вызова:
 stripe.products.create({
    name: req.body.productName,
    images: [req.body.productImage]
}, 
    (err, newProduct) => {
        console.log("I am here");
    if (err) {
        console.log(err);
    } else {
        console.log('New Stripe Product Created', newProduct);
    }
});