Ошибка функций Firebase при вызове Stripe - PullRequest
0 голосов
/ 24 апреля 2020

Я iOS разработчик с очень небольшим опытом работы с Javascript и серверным кодом, поэтому я немного растерялся.

Я получаю сообщение об ошибке при создании нового пользователя в Firebase и вызвать функцию для создания нового пользователя в полосе. Вот моя базовая функция прямо из документов Stripe.

exports.createStripeCustomer = functions.auth.user().onCreate(async (user) => { 
    const customer = await stripe.customers.create({email: user.email});
    return admin.firestore().collection('stripe_customers').doc(user.uid).set({customer_id: customerId});
  });

Я успешно создал нового пользователя в Stripe с идентификатором клиента. enter image description here Я получаю эту ошибку в своих журналах регистрации базы данных и не сохраняю идентификатор клиента, чтобы сохранить его в пожарном депо. Я не уверен, что я делаю неправильно или как интерпретировать это сообщение. Будем очень благодарны за любые указатели.

createStripeCustomer
ReferenceError: customerId is not defined at exports.createStripeCustomer.functions.auth.user.onCreate (/srv/index.js:120:93) at <anonymous> at process._tickDomainCallback (internal/process/next_tick.js:229:7)

Я также пробовал этот возврат, меняя customerId на ID

return admin.firestore().collection('stripe_customers').doc(user.uid).set({customer_id: ID});

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Из документации похоже, что объект ответа содержит свойство id. Возможно, вы хотели написать эту строку вместо:

return admin.firestore()
    .collection('stripe_customers')
    .doc(user.uid)
    .set({customer_id: customer.id});  // use the ID property here
0 голосов
/ 25 апреля 2020

Вот, где я наконец-то оказался. Я использовал обещание вместо ожидания.

exports.createStripeCustomer = functions.auth.user().onCreate(async (user) => { 
  const stripePromise = new Promise((resolve, reject) => {
    stripe.customers.create({
      email: user.email
    }, (err, customer) => {
      if (err) {
        reject(err)
      } else {
        resolve(customer);
          stripePromise
            .then(customer => {
              return admin.firestore()
                .collection('stripe_customers')
                .doc(user.uid)
                .set({customer_id: customer.id});
            })
            .catch(error => { 
              console.log(`error resolving promise ${error}`)
            })
      }
    });
  })
});
...