Я написал облачную функцию Firebase, чтобы регистрировать людей в моей базе данных Firebase.Я проверил с POSTMAN, и функция работает правильно.
Проблема, с которой я столкнулся, заключается в том, что у меня есть функция, которая получает идентификатор полосы, а затем должна вернуть это значение.Я хочу, чтобы идентификатор клиента (customer.id в моей ссылке) добавлял созданную мной строку JSON с информацией о пользователях.
Таким образом, когда функция выполнена, ей нужно записать все данные в firebase изатем верните ту же строковую переменную JSON в мое приложение.Это все работает, но я не могу заставить Stripe ID добавляться в мой массив JSON и анализироваться.
Я пытался найти решение в Интернете, и я считаю, что мой синтаксис правильный, но он не работает.Я знаю, что функция работает, потому что console.log выводит идентификатор полосы, и он просто не добавляется в переменную JSON, которая записывается в Firebase.
Любой, кто мог бы объяснить, где я ошибаюсь, будеточень признателен.Я указал на свои проблемные пункты в коде ниже с помощью // для комментариев.
exports.myCloudFunction=
functions.https.onRequest((req, res) => {
if (req.method !== 'POST') {
return;
}
const userDataInput = req.body;
console.log('Console Body:', req.body);
admin.auth().createUser({
email: userDataInput.email,
emailVerified: false,
phoneNumber: userDataInput.mobile,
password: userDataInput.password,
displayName: userDataInput.firstname + ' ' + userDataInput.lastname,
disabled: false
})
.then(async function (userRecord) {
console.log('User record:', userRecord);
var userObject = //CONSTRUCTED JSON STRING
{
first_name: userDataInput.firstname,
last_name: userDataInput.lastname,
mobile_number: userDataInput.mobile,
email: userDataInput.email,
timestamp: admin.database.ServerValue.TIMESTAMP,
driver_profile: { isDriverApproved: false, isDriverDisabled: false, isDriverStatusPending: false, isDriver: false, isPickupModeEnabled: false },
}
stripe.customers.create({
description: 'Firebase ID: ' + userRecord.uid,
email: userRecord.email,
name: userRecord.displayName,
phone: userRecord.phoneNumber
}, async function (err, customer) {
console.log('New Stripe ID Created', customer.id); // THIS WORKS< THE customer.id is outputting
try {
return userObject[{ stripe_id: customer.id }]; // THIS IS NOT WORKING, I WANT **customer.id** TO BE PUT INTO THE **userObject** JSON variable.
}
catch (error) {
console.error(error);
return res.status(200).send('Error: ' + error);
}
});
try {
await admin.database().ref('users/' + userRecord.uid).set(userObject);
return res.status(200).send({ returnData: userObject });
}
catch (error) {
console.error(error);
return res.status(200).send('Error: ' + error);
}
})
.catch(function (error) {
console.log('Error creating new user:', error);
res.status(500).send({ returnError: error });
});
});