0
以下の関数は、シェルでテストしたときにうまく動作し、ファイアウォールにデータが作成されます。 prodにプッシュすると、Function execution took 60002 ms, finished with status: 'timeout'
が返されます。Firebase Cloud関数のタイムアウト
入力がありますか?
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"));
});
});
編集
私は次のように自分のコードを更新しましたが、私はまだFunction returned undefined, expected Promise or value
を取得しますが、私の関数の戻り値は未定義どこで識別することはできません。なぜ私の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;
}
ありがとう@Frank、それは、then()がset()の約束を殺すことを意味しますか? – Benoit