【问题标题】:Firebase cloud function returns null to client even though it succeeded即使成功,Firebase 云函数也会向客户端返回 null
【发布时间】:2019-06-22 17:43:05
【问题描述】:

我一直在尝试编写我的第一个云函数,您可以在下面看到。在云函数日志中,它输出它击中了第一个console.log(Successful: userRecord.uid),但之后似乎没有做任何事情。

谁能指出我正确的方向是什么?

非常感谢。

const admin = require('firebase-admin');
const express = require('express');
const cors = require('cors');

const app = express();
admin.initializeApp();
app.use(cors({origin: true}));
const db = admin.firestore();

exports.addUser = functions.https.onCall((data, res) =>
{
    console.time();
    admin.auth().createUser({
        email: data.email,
        emailVerified: true,
        password: data.password,
        disabled: false
    })
        .then(userRecord => {
            console.log('Successful: ', userRecord.uid);
            const message = {
                firstname: data.firstname,
                lastname: data.lastname
            }
            return db.collection('Users').add(message)
                .then(() => {
                    return "Success";
                })
        })
        .catch(function(error) {
            console.log('Error creating new user:', error);
            console.trace();
            console.timeEnd();
            return "Error";
        });
});

【问题讨论】:

    标签: javascript firebase google-cloud-functions


    【解决方案1】:

    对于任何想知道的人,我能够解决我自己的问题:

    对我来说,我需要返回每个函数,所以代码变成了这样:

    注意admin.auth().createUser上的return

    const express = require('express');
    const cors = require('cors');
    
    const app = express();
    admin.initializeApp();
    app.use(cors({origin: true}));
    const db = admin.firestore();
    
    exports.addUser = functions.https.onCall((data, res) =>
    {
        console.time();
        return admin.auth().createUser({
            email: data.email,
            emailVerified: true,
            password: data.password,
            disabled: false
        })
            .then(userRecord => {
                console.log('Successful: ', userRecord.uid);
                const message = {
                    firstname: data.firstname,
                    lastname: data.lastname
                }
                return db.collection('Users').add(message)
                    .then(() => {
                        return "Success";
                    })
            })
            .catch(function(error) {
                console.log('Error creating new user:', error);
                console.trace();
                console.timeEnd();
                return "Error";
            });
    });```
    

    【讨论】:

    • 具体来说,正如文档所述,您应该返回一个用您要发送给客户端的数据进行解析的承诺。
    • 对不起,如果我没有正确地做,你能指出我正确的方向吗?谢谢!
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2021-03-12
    • 2016-08-05
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多