federico D'Armini
federico D'Armini

Reputation: 321

"native "AssertionError_throwNew" " error with Firebase Firestore

I have this function that checks if a document exists or not, if exists returns true otherwise false :

Future<bool> checkMissingId(String id) async {

  String str = id.toLowerCase();
  String letter = str[0];
  String path = letter + "/" + str;

  try {
    final snapShot =
        await FirebaseFirestore.instance.collection(path).doc(str).get();

    if (snapShot == null || !snapShot.exists) {
      return true;
    } else
      return false;
  } catch (e) {
    print(e);
    return false;
       }
    }

But when I call it from here (after save and validate form ) :

 Future<void> _submit() async {
    //Create Artist and send it to the database
    if (_validateAndSaveForm()) {
      await checkMissingId(userNameF);
    }
}

All freezes and it opens a new file called "errors_patch.dart" with this exception :

static _doThrowNew(int assertionStart, int assertionEnd, Object? message)
      native "AssertionError_throwNew";

I think the problem is that checkMissingId is of type Future and maybe I'm not handling futures in the right way...But the error highlights also await FirebaseFirestore.instance.collection(path).doc(str).get(); so I don't know exactly how isolate the problem. This is the stack :

assert(isValidCollectionPath(collectionPath),

await FirebaseFirestore.instance.collection(path).doc(str).get();
 with a red quotes : 

_AssertionError ('package:cloud_firestore/src/firestore.dart': Failed assertion: line 74 pos 12: 'isValidCollectionPath(collectionPath)': a collection path must point to a valid collection.)
 await checkMissingId(userNameF);

Maybe it depends by wrong document path from Firestore?

Upvotes: 0

Views: 5495

Answers (1)

Ravi Singh Lodhi
Ravi Singh Lodhi

Reputation: 2793

I think you are passing the wrong collection name in this line:

final snapShot = await FirebaseFirestore.instance.collection(path).doc(str).get();

because, your path variable is this:

String path = letter + "/" + str; // I guess here is something wrong

Your collection name would be a fixed string as shown below in this screenshot (comments, posts, users etc):

Collection name

Upvotes: 3

Related Questions