Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase云功能超时_Javascript_Firebase_Google Cloud Functions_Google Cloud Firestore - Fatal编程技术网

Javascript Firebase云功能超时

Javascript Firebase云功能超时,javascript,firebase,google-cloud-functions,google-cloud-firestore,Javascript,Firebase,Google Cloud Functions,Google Cloud Firestore,使用shell测试时,以下函数运行良好,数据在firestore中创建。 当推入prod时,它返回函数执行耗时60002毫秒,状态为“超时” 有什么意见吗 exports.synchronizeAzavista = functions.auth.user().onCreate(event => { console.log('New User Created'); const user = event.data; const email = user.email;

使用shell测试时,以下函数运行良好,数据在firestore中创建。 当推入prod时,它返回
函数执行耗时60002毫秒,状态为“超时”

有什么意见吗

exports.synchronizeAzavista = functions.auth.user().onCreate(event => {

    console.log('New User Created');

    const user = event.data;
    const email = user.email;
    const uid = user.uid;

    return admin.database().ref(`/delegates`)
        .orderByChild(`email`)
        .equalTo(email)
        .once("child_added").then(snap => {
            const fbUserRef = snap.key;

            return admin.firestore().collection(`/users`).doc(`${fbUserRef}`).set({
                email: email,
                uid: uid
            }).then(() => console.log("User Created"));
        });
});
编辑

我已经用以下内容更新了我的代码,但我仍然得到
函数返回未定义、预期的承诺或值
,但我无法确定函数返回未定义的位置。为什么我的
getUser()
函数不返回任何内容

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

admin.initializeApp(functions.config().firebase);

exports.synchronizeAzavista = functions.auth.user().onCreate(event => {

    console.log('New User Created');//This log

    const user = event.data;
    const email = user.email;
    const uid = user.uid;

    console.log('Const are set');//This log

    getUser(email).then(snap => {

        console.log("User Key is " + snap.key);//No log

        const fbUserRef = snap.key;

        return admin.firestore().collection(`/users`).doc(`${fbUserRef}`).set({
            email: email,
            uid: uid
        });
    }).then(() => console.log("User Data transferred in Firestore"));
});

function getUser(email) {

    console.log("Start GetUser for " + email);//This log 

    const snapKey = admin.database().ref(`/delegates`).orderByChild(`email`).equalTo(email).once("child_added").then(snap => {
        console.log(snap.key);//No Log here
return snap;
    });
    return snapKey;
}

你没有回复你写给Firestore的承诺

exports.synchronizeAzavista = functions.auth.user().onCreate(event => {
    const user = event.data;
    const email = user.email;
    const uid = user.uid;

    return admin.database().ref(`/delegates`)
        .orderByChild(`email`)
        .equalTo(email)
        .once("child_added").then(snap => {
            const fbUserRef = snap.key;

            return admin.firestore().collection(`/users`).doc(`${fbUserRef}`).set({
                email: email,
                uid: uid
            });
        });
});

你没有回复你写给Firestore的承诺

exports.synchronizeAzavista = functions.auth.user().onCreate(event => {
    const user = event.data;
    const email = user.email;
    const uid = user.uid;

    return admin.database().ref(`/delegates`)
        .orderByChild(`email`)
        .equalTo(email)
        .once("child_added").then(snap => {
            const fbUserRef = snap.key;

            return admin.firestore().collection(`/users`).doc(`${fbUserRef}`).set({
                email: email,
                uid: uid
            });
        });
});

谢谢@Frank,这是否意味着then()终止集合()的承诺?不-问题不在于“then”-您可以包含一个then部分,但您需要返回承诺,因此Firebase知道它必须让您的函数保持活动状态,直到该承诺解决。-然后firebase可以将承诺的结果解释为成功或错误(拒绝承诺)谢谢@Frank,这是否意味着then()终止了集合的承诺()?不-问题不在于“then”-您可以包含then部分,但您需要返回承诺,所以Firebase知道它必须让你的功能保持活跃,直到承诺解决为止。-然后firebase可以将承诺的结果解释为成功或错误(拒绝承诺)