firebase Flutter“[cloud_firestore/invalid-argument]客户端指定的参数无效,”

m3eecexj  于 2022-12-19  发布在  Flutter
关注(0)|答案(3)|浏览(189)

我正在尝试向集合写入文档,直到12小时前它还在工作。
我尝试写入的数据:

var uploadData = {
          'date_of_birth': _dateOfBirth,
          'name': _name,
          'hip_size': _hipSize,
          'height': _height,
          'tennis_level': _tennisLevel,
          'days_available': _daysOfWeek,
          'weight': _weight,
          'image': imageUrl,
          'secondary_courts': [],
          'travel_range': _travelRange.km,
          'travel_range_name': _travelRange.rangeName,
          'play_hand': playHand,
        };

        await firestore.collection('users').doc(user.user.uid).set(uploadData);

错误:

W/Firestore( 8153): (23.0.1) [WriteStream]: (43c3cb2) Stream closed with status: Status{code=INVALID_ARGUMENT, description=Error compiling rules:
W/Firestore( 8153): L25:1 Unexpected '<EOF>'.
W/Firestore( 8153): L25:1 missing '}' at '<EOF>', cause=null}.
[cloud_firestore/invalid-argument] Client specified an invalid argument. Note that this differs from failed-precondition. invalid-argument indicates arguments that are problematic regardless of the state of the system (e.g., an invalid field name).

我重新输入了一遍数据。我在两个编辑器中运行了一个正则表达式。我似乎不能理解它。
数据类型:

//Profile and login Data
  String _email;
  String _password;
  DateTime _dateOfBirth;
  Map<String, String> _name = {
    'first_name': '',
    'middle_name': '',
    'last_name': '',
    'full_name': '',
  };
  double _hipSize;
  double _weight;
  Map<String, int> _height = {
    'feet': 0,
    'inches': 0,
  };

  double _tennisLevel;

  Map<String, bool> _daysOfWeek = {
    'sunday': false,
    'monday': false,
    'tuesday': false,
    'wednesday': false,
    'thursday': false,
    'friday': false,
    'saturday': false,
  };

  List<TennisCourt> _tennisCourts = [];
  File _profileImage;
  String _daysAvailable = '';
  TravelRange _travelRange;
  bool isRightHanded = true;
  String playHand = isRightHanded ? 'right' : 'left';

我还记录了所有数据的runTimeTypes:

date_of_birth: DateTime
name: _InternalLinkedHashMap<String, String>
hip_size: double
height: _InternalLinkedHashMap<String, int>
tennis_level: double
days_available: _InternalLinkedHashMap<String, bool>
weight: double
image: String
secondary_courts: List<dynamic>
travel_range: double
travel_range_name: String
play_hand: String
31moq8wy

31moq8wy1#

您发送的所有数据必须是Firebase中接受的数据之一,即:字符串、数字、列表、Map、布尔值等
请确保您发送的数据不是您定义的对象。从您的帖子中,我怀疑这些:playHand_daysOfWeek
尝试删除它们并测试它是否有效,或者在您的模型中创建一个toMap()方法。

要考虑的其他要点:

  • 您的用户.uid不是null
  • 如果您最近更改了Firestore规则,请确保没有遗漏任何内容。
kdfy810k

kdfy810k2#

此问题是由firestore.rules文件中的错误引起的。确切地说是语法错误。

hm2xizp9

hm2xizp93#

在我的例子中,我过滤了同一个字段两次,所以我删除了它,它就解决了。

相关问题