Firebase 云函数在 Flutter 中返回 null,因为它仍在运行
Posted
技术标签:
【中文标题】Firebase 云函数在 Flutter 中返回 null,因为它仍在运行【英文标题】:Firebase cloud function returns null in Flutter because it's still running 【发布时间】:2019-12-30 20:20:42 【问题描述】:更新:我从我的 firebase 控制台中得到了这个:函数执行耗时 2906 毫秒,完成状态码:200 15 秒后,我得到:console.log 文档确实存在
我正在运行这个云存储功能。它“有效”,但我不断得到这个作为回报:FLUTTER:NULL
但是在 firebase 控制台中,我得到了 console.log,上面写着“DOC DOES EXIST”。
有什么办法可以解决这个问题?语言类型脚本
非常感谢!
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);
);
);
【问题讨论】:
【参考方案1】:我建议使用可以帮助您调试的 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;
);
【讨论】:
谢谢!返回 doc.data() 时,我试图在 firestore 中使用用户 ID 和邮件地址设置一个新文档。但是当我尝试实现它时:它说:“必须妥善处理承诺” @KarelDebedts 你能分享你的完整功能吗?【参考方案2】:可调用函数必须返回一个promise,该promise 用要发送给客户端的数据进行解析。如图所示,该函数在顶层没有返回任何内容。从then
回调返回是不够的。你还需要返回then
返回的promise:
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);
);
);
【讨论】:
以上是关于Firebase 云函数在 Flutter 中返回 null,因为它仍在运行的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Firebase Functions:调用函数时出错