【发布时间】:2021-02-12 11:47:05
【问题描述】:
这里的总体目标是了解 Firebase 将如何向我收取函数调用的费用。我定义了一个名为newUserFlow 的虚拟函数和一个名为addFriend 的函数。如果我在addFriend 中调用newUserFlow,我想查看Firebase 控制台-> 云功能-> 使用选项卡是否会将其显示为调用了1 个函数或调用了2 个函数。但是,我不断收到错误消息。
exports.newUserFlow = functions.https.onCall((data, context) => {
return 'finished new user flow';
});
exports.addFriend = functions.https.onCall((data, context) => {
console.log('addFriend: ');
const promise = exports.newUserFlow(null, null)
// var outputVal: string;
promise.then(async (outputVal: string) => {
console.log('addFriend_outputVal: ', outputVal)
const uid1 = context?.auth?.uid; //current user
if (uid1) {
var uid2: string;
const docUID2 = await admin.firestore().collection('users').where('username', '==', data.targetUser).get();
const friendsColl = 'friends_' + uid1
if (!docUID2.empty) {
docUID2.forEach(doc => {
uid2 = doc.get('uid').toString(); //target UID
if (uid2) {
const docRef = admin.firestore().collection(friendsColl).doc();
return docRef.set({
friendUID: uid2,
stat: 0, //0 = blocked, 1 = accepted, 2 = pending, 3 = declined
createDate: admin.firestore.FieldValue.serverTimestamp(),
modifiedDate: admin.firestore.FieldValue.serverTimestamp(),
})
}
else {
return console.log('addFriend_Error: Target uid is empty.');
}
})
}
else {
return console.log('addFriend_Error: Target user not found.');
}
}
else {
return console.log('Error: user is not authorized');
}
}
)
promise.catch((outputVal: string) => {
return console.log('addFriend_promisecatch')
})
});
必须正确处理错误承诺或使用
void运算符明确标记为已忽略
【问题讨论】:
标签: typescript promise google-cloud-functions