У меня есть этот код:
function createPlan(amount) {
return stripe.plans.create({
product: 'DigitLead website evaluation tool',
nickname: 'DigitLead website evaluation tool monthly charge',
currency: 'cad',
interval: 'month',
amount: amount,
});
}
var product = stripe.products.create({
name: 'DigitLead website evaluation tool monthly charge',
type: 'service',
});
console.log(time);
if (time === '1') {
var amount = 1499;
var days = 30;
var plan = createPlan(1499);
}
else if (time === '3') {
amount = 999 * 3;
days = 90;
plan = createPlan(999);
}
plan.then(p => console.log("p " + p));
if (typeof req.user.stripeId === undefined) {
var customer = stripe.customers.create({
email: req.user.username,
source: req.body.stripeToken,
});
}
Выглядит хорошо, но проблема в том, что этот код асинхронный.Поэтому, когда я пытаюсь создать plan
, используя переменную product
, его не существует.
Я могу использовать цепочку then
, но это будет чертовски грязно.Я пытался сделать это с помощью добавления await
, например:
var product = stripe.products.create({
name: 'DigitLead website evaluation tool monthly charge',
type: 'service',
});
, но узел просто сказал:
/home/iron/Documents/Projects/digitLead/routes/payment.js:46
var product = await stripe.products.create({
^^^^^
SyntaxError: await is only valid in async function
Я не хочу использовать ад обратного вызова, поэтомуЯ действительно не знаю, что делать.В обычном коде я просто напишу функцию с именем async
и верну обещание.Здесь я использую Stripe API, поэтому я не могу ничего редактировать.