Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing Error on whereIn Query with Document IDs #6

Open
motucraft opened this issue Feb 9, 2024 · 3 comments
Open

Parsing Error on whereIn Query with Document IDs #6

motucraft opened this issue Feb 9, 2024 · 3 comments

Comments

@motucraft
Copy link

Expected Behavior

Using whereIn to filter by document IDs with cloud_firestore_odm should work similarly to cloud_firestore, allowing queries to be made based on a list of document IDs without any issues.

Actual Behavior

When using whereIn with document IDs in cloud_firestore_odm, an error occurs, whereas the same operation succeeds without issues when using cloud_firestore directly.

An error occurred while parsing query arguments, this is most likely an error with this SDK. (
	0   CoreFoundation                      0x000000018048d8a8 __exceptionPreprocess + 172
	1   libobjc.A.dylib                     0x000000018008409c objc_exception_throw + 56
	2   FirebaseFirestoreInternal           0x0000000102c1f458 _ZN8firebase9firestore4util16ObjcThrowHandlerENS1_13ExceptionTypeEPKcS4_iRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE + 540
	3   FirebaseFirestoreInternal           0x0000000102c1ea64 _ZN8firebase9firestore4util5ThrowENS1_13ExceptionTypeEPKcS4_iRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE + 64
	4   FirebaseFirestoreInternal           0x0000000102cf7d54 _ZN8firebase9firestore4util20ThrowInvalidArgumentIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEvPKcDpRKT_ + 64
	5   FirebaseFirestoreInternal           0x0000000102eda7d0 _ZNK8firebase9firestore3api5Query27ParseExpectedReferenceValueERKNS0_26_google_firestore_v1_ValueERKNSt3__18functionIFNS6_12basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEvEEE +
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: [cloud_firestore/unknown] An error occurred while parsing query arguments, this is most likely an error with this SDK.
#0      FirebaseFirestoreHostApi.queryGet (package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart:1130:7)
<asynchronous suspension>
#1      MethodChannelQuery.get (package:cloud_firestore_platform_interface/src/method_channel/method_channel_query.dart:118:11)
<asynchronous suspension>
#2      _JsonQuery.get (package:cloud_firestore/src/query.dart:432:9)
<asynchronous suspension>
#3      _WithConverterQuery.get (package:cloud_firestore/src/query.dart:983:22)
<asynchronous suspension>
#4      IssueQuerySnapshot.IssueQuerySnapshot._fromQuerySnapshot (package:firebase_playground/issue.g.dart:754:3)
<asynchronous suspension>
#5      MyApp.build.<anonymous closure> (package:firebase_playground/issue.dart:38:7)
<asynchronous suspension>

Steps to Reproduce the Problem

  1. Execute following example
  2. Attempt to query documents by their IDs using whereIn with the issuesRef.whereDocumentId(whereIn: ['1', '3']).get() function.
  3. This leads to the display of the previously mentioned error message.
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:cloud_firestore_odm/cloud_firestore_odm.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_playground/firebase_options.dart';
import 'package:flutter/material.dart';
import 'package:freezed_annotation/freezed_annotation.dart';

part 'issue.freezed.dart';
part 'issue.g.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // OK: cloud_firestore
    Future.microtask(() async {
      final collection = FirebaseFirestore.instance.collection('issues');
      final querySnapshot = await collection
          .where(FieldPath.documentId, whereIn: ['1', '3']).get();
      querySnapshot.docs.forEach((element) {
        print('data=${element.data()}');
      });
    });

    // NG: cloud_firestore_odm
    Future.microtask(() async {
      await issuesRef.whereDocumentId(whereIn: ['1', '3']).get();
    });

    return const MaterialApp(
        home: Scaffold(body: Center(child: Text('issues'))));
  }
}

@freezed
class Issue with _$Issue {
  const factory Issue({
    required String id,
  }) = _Issue;

  factory Issue.fromJson(Map<String, Object?> json) => _$IssueFromJson(json);
}

@Collection<Issue>('issues')
final issuesRef = IssueCollectionReference();

IssueDocumentReference issueRef({required String id}) =>
    IssueDocumentReference(issuesRef.doc(id).reference);

collection is as follows:

Specifications

  • Version:
  firebase_core: ^2.25.4
  cloud_firestore: ^4.15.4
  cloud_firestore_odm: ^1.0.0-dev.83
  • Platform: iOS, Android...
flutter doctor -v
% flutter doctor -v
[✓] Flutter (Channel stable, 3.16.9, on macOS 14.3.1 23D60 darwin-arm64, locale ja-JP)
    • Flutter version 3.16.9 on channel stable at /Users/osaki/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 41456452f2 (2 weeks ago), 2024-01-25 10:06:23 -0800
    • Engine revision f40e976bed
    • Dart version 3.2.6
    • DevTools version 2.28.5

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/osaki/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Users/osaki/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/osaki/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.3.3)
    • IntelliJ at /Users/osaki/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.3.1
    • Dart plugin version 233.13763.5

[✓] VS Code (version 1.86.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (4 available)
    • motucraft (mobile)         • 00008130-001A34290CC2001C            • ios            • iOS 17.3.1 21D61
    • iPhone 15 Pro Max (mobile) • 34AAA87A-1E84-4717-A688-316247843A52 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 121.0.6167.160

[✓] Network resources
    • All expected network resources are available.

• No issues found!

@motucraft
Copy link
Author

motucraft commented Feb 9, 2024

@rrousselGit
I believe the functionality was working fine in version 1.0.0-dev.80. Could this be an issue related to the version upgrade?
The following versions functioned properly.

  cloud_firestore: ^4.13.5
  cloud_firestore_odm: ^1.0.0-dev.80

@motucraft
Copy link
Author

motucraft commented Mar 5, 2024

@rrousselGit
Is it the same cause as a838434 ? If same, close this.

@gmarizy
Copy link

gmarizy commented Mar 14, 2024

Dev version 83 is flawed, see #7

Try with latest versions:

cloud_firestore: 4.15.8
cloud_firestore_odm: 1.0.0-dev.84
cloud_firestore_odm_generator: 1.0.0-dev.85

You can test with those versions, and close this issue yourself if it's the case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants