更新:我从Firebase控制台中获取了此信息:函数执行耗时2906 ms,状态码为200 15秒后,我得到:console.log文件确实存在
我正在运行此云Firestore功能。它“有效”,但我不断得到回报:FLUTTER:NULL
但是在firebase控制台中,我得到了console.log,上面写着“ DOC DOES EXIST”。
对此有什么解决方案?语言TYPESCRIPT
非常感谢您!
export const pubVer = functions.https.onCall((data, context) => {
console.log(data.message);
const kRef = admin.firestore().collection('Keys').doc(data.message)
kRef.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
return {returnMessage: 'FALSE'}
} else {
console.log('DOC DOES EXIST');
return {'returnMessage: 'TRUE'}
}
})
.catch(err => {
console.log('Error getting document', err);
});
});
答案 0 :(得分:0)
我建议使用async / await,它可以帮助您调试
export const pubVer = functions.https.onCall(async (data, context) => {
const documentId = data.message;
const kRef = admin.firestore().collection('Keys').doc(documentId);
try {
const doc = await kRef.get();
if (!doc.exists)
throw new Error('No such document!');
return doc.data();
} catch (e) {
console.log(e);
return null;
}
});
答案 1 :(得分:0)
可调用函数必须返回一个承诺,该承诺将与数据一起解析以发送给客户端。如图所示,该函数未在顶层返回任何内容。从then
回调返回还不够。您还需要返回then
返回的承诺:
export const pubVer = functions.https.onCall((data, context) => {
console.log(data.message);
const kRef = admin.firestore().collection('Keys').doc(data.message)
return kRef.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
return {returnMessage: 'FALSE'}
} else {
console.log('DOC DOES EXIST');
return {'returnMessage: 'TRUE'}
}
})
.catch(err => {
console.log('Error getting document', err);
});
});