微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - Firebase 云函数可调用函数格式错误

如何解决Flutter - Firebase 云函数可调用函数格式错误

我正在尝试使用云函数中的可调用函数修改我的 Firestore 数据库...这是我的云函数

exports.addUserdisplayName = functions.region("europe-west1")
    .https.onCall((data,context) => {
      functions.logger.log("User displayname updated",data.userUid,data.displayName);
      admin.firestore().collection("users").doc(data.userUid).update({
        displayName: data.displayName,});
      return {
        status: "done",};
    });

这是我在我的 Flutter 应用程序上调用此云功能方法

HttpsCallable addUserdisplayName = FirebaseFunctions.instance.httpsCallable("addUserdisplayName");
      await addUserdisplayName.call({
        'userUid': userCredential!.user!.uid,'displayName': "$firstName $lastName",},);

但我不知道为什么,每次我尝试调用我的函数时,我都会收到此错误并且没有调用任何内容

Flutter: [firebase_functions/3840] The data Couldn’t be read because it isn’t in the correct format.

#0      StandardMethodCodec.decodeEnvelope (package:Flutter/src/services/message_codecs.dart:597:7)
#1      MethodChannel._invokeMethod (package:Flutter/src/services/platform_channel.dart:158:18)
<asynchronous suspension>
#2      MethodChannelHttpsCallable.call (package:cloud_functions_platform_interface/src/method_channel/method_channel_https_callable.dart:22:24)
<asynchronous suspension>
#3      HttpsCallable.call (package:cloud_functions/src/https_callable.dart:34:37)
<asynchronous suspension>
#4      AuthProvider.createuser (package:kcount/providers/auth_provider.dart:50:7)
<asynchronous suspension>

你知道为什么吗?

解决方法

好的,我发现问题是附加在区域上的...我忘记放.instanceFor(region: 'europe-west1')

所以我不得不这样做:

HttpsCallable addUserDisplayName = FirebaseFunctions.instanceFor(region: 'europe-west1').httpsCallable("addUserDisplayName");
      await addUserDisplayName.call({
        'userUid': userCredential!.user!.uid,'displayName': "$firstName $lastName"
      },);

代替:

HttpsCallable addUserDisplayName = FirebaseFunctions.instance.httpsCallable("addUserDisplayName");
      await addUserDisplayName.call({
        'userUid': userCredential!.user!.uid,'displayName': "$firstName $lastName",},);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。