我已经编写了Firebase云功能来将人们注册到我的Firebase数据库中。 我已经使用POSTMAN进行了测试,并且该功能正常运行。

我遇到的问题是我有一个获取数据条ID的函数,然后需要返回该值。 我希望客户ID(在我的参考资料中为customer.id)附加一个我用用户信息创建的JSON字符串。

这样,完成函数后,它需要将所有数据写入firebase,然后将相同的JSON字符串变量返回到我的应用程序。 所有这些都可以,但是我无法将Stripe ID附加到我的JSON数组中并进行解析。

我一直在畏缩互联网,试图找到一个解决方案,我相信我的语法是正确的,但是没有用。 我知道该函数正在工作,因为console.log正在输出条带ID,只是不将其添加到正在写入Firebase的JSON变量中。

任何可以解释我要去哪里的人将不胜感激。 我在下面的代码中用//引用了我的问题要点。

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 });
        });

});

#1楼 票数:0

我认为返回它不会返回任何东西,因为是回调

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 {
                        // Move your logic to the final callback
                        userObject["stripe_id"] = customer.id;

                        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});
            });

    });

#2楼 票数:0

我想我发现了错误。 您的语法有问题

有一行代码是错误的

 //replace 
 return userObject[{ stripe_id: customer.id }];

 // for this
 return userObject.stripe_id = customer.id;

注意:尝试更好地分离代码。 有点很难读

  ask by Greg translate from so

未解决问题?本站智能推荐:

1回复

Firebase云函数:在json中返回Base64字符串

我正在编写一个 Firebase 云函数,它接收一个 URL 并将 URL 的内容(可以是 pdf 文档/图像)转换为 base64 字符串并将其返回到一个 json 对象中。 我当前的实现遇到以下错误消息: 函数执行耗时 1522 毫秒,完成状态:'响应错误' 没有记录错误日志。 到目前为止我的
1回复

将所有数据返回到FirebaseCloudFunctions中的新节点中

这是我输入的数据: 这是我的功能: 这是我收到的错误: 是否可以将所有创建的值更新回另一条路径? 我以为可以用event.data.val()创建一个const,但是我得到了错误。
2回复

从onCallfirebase云函数返回一个字符串

我正在研究 firebase 云函数并尝试使用 javascript 和云函数在 firebase auth 上注册用户。 我想要做的是将数据发送到云函数,从云函数返回数据,然后在web应用程序上使用它。 我该怎么做? 这是两个代码: Javascript 发送值,运行良好: 在这里,我的云功能正
1回复

onCall云函数返回“数据不能用JSON编码。南'

我有一个看起来像这样的 onCall 函数.. 我的 console.log 将我请求的文档打印为对象,所以我不确定问题是什么?
1回复

意外的令牌节点js

我正在开发一个需要通知的应用程序,并且我进行了一项研究,即Firebase函数对于执行此类功能非常有用。 结果,我观看了一些youtube和论坛教程以集成此功能,但现在在部署过程中遇到了问题。 因此,当我将此流动代码部署到firebase函数时,得到了意外的令牌“”我什至不知道我的代码中的错
1回复

如何在CloudFunctions的CloudFunctions中实现json对象?

我想通过将原始收据发送到App Store服务器进行验证并使用Firebase云功能获得验证回执来验证应用购买收据中的Apple。 这是逻辑代码。 如何输入收据JSON对象(位于Firebase数据库中)以及如何将此代码集成到http函数中? 我正在使用'request'npm库。
2回复

NodeJSFirebase应用程序在无效JSON上崩溃

这是我的 NodeJS 应用程序。 我已经注释掉了一些部分以缩小问题的范围。 当我发送无效的 JSON 时 应用程序崩溃。 如何处理这个异常。 这将允许外部用户使应用程序崩溃
1回复

Firebase函数,响应不是有效的json对象

我正在使用 android studio 开发基于角色的应用程序,因为我的项目需要管理员权限来创建用户和删除用户,我为我的项目使用了 firebase admin sdk。 我试图删除多个帐户,但我遇到了问题。 响应返回无效的 json 对象。 在我的代码中,我试图处理可能的错误。 但是,响应仍然返