错误FirebaseError:集合引用无效,:集合引用必须有奇数个段,但Notes/id有2个

pzfprimi  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(132)

4个月前我开始学习Angular编程。现在我正在使用Firestore数据库练习CRUD。我有这个错误,而我试图删除我的程序:
系统发生错误:10592 ERROR集合引用无效。集合引用的段数必须为奇数,但Notes/r5 GucE 9DETw 36 sJKCMgi的段数为2。
我试了好几种方法,但还是同样的错误。
这是我的HTML:

<div class="col-md-4" *ngFor="let note of notesData">
            <div class="card card-body">
                <h5 class="card-title">{{ note.title }}</h5>
                <p class="text-muted">{{ note.description }}</p>
                    <div class="d-flex align-items-center">
                        <span class="mx-2">
                            <i class="bi bi-pencil-square" data-bs-toggle="modal" 
                            data-bs-target="#editNotesModal"></i>
                        </span>
                        <span class="mx-2">
                        <i class="bi bi-trash" (click)="deleteNote(note)"></i>
                    </span>
                    </div>

我的TS文件:

noteForm!: FormGroup;
  notesData: any;
  noteObj: Note = {
    id: '',
    title: '',
    description: ''
  }

  constructor(private fb: FormBuilder, private noteService: NoteService){
    this.noteForm = this.fb.group({
      title: ['', Validators.required],
      description: ['', Validators.required]
    })
  }

  ngOnInit(){
    this.fetchAllNotes()
  }

  addNote(){
    const { value } = this.noteForm
    console.log(value);

    this.noteObj.id = '',
    this.noteObj.title = value.title,
    this.noteObj.description = value.description

    this.noteService.addNote(this.noteObj).then((note)=>{
      if(note){
        alert("Note Added Successfully")
      }
    })
    this.noteForm.reset()
  }

  fetchAllNotes(){
    this.noteService.getNotes().subscribe((res: Note[])=>{
      console.log(res)
      this.notesData = res;
    })
  }

  deleteNote(note: Note){
    let delConfirm = confirm('Delete current selected Note?');
    if (delConfirm == true){
      this.noteService.deleteNote(note);
    }
  }
}

我的服务:

addNote (note: Note){
    note.id = doc(collection(this.fs, 'id')).id
    return addDoc(collection(this.fs, 'Notes'), note)
  }

  getNotes():Observable<Note[]>{
    let notesRef = collection(this.fs, 'Notes')
    return collectionData(notesRef, {idField: 'id'}) as Observable<Note[]>
  }

  deleteNote(note: Note){
    let docRef = doc(collection(this.fs,`Notes/${note.id}`));
    return deleteDoc(docRef)
  }

  updateNote(note: Note, notes: any){
    let docRef = doc(this.fs, `Notes/${note.id}`);
    return updateDoc(docRef, notes)
  }

我的Firebase数据库

我尝试了这个https://firebase.google.com/docs/firestore/manage-data/delete-data#collections但更多的错误发生,想知道我做错了什么.

mgdq6dx1

mgdq6dx11#

在下面的代码中

deleteNote(note: Note){
     let docRef = doc(collection(this.fs,`Notes/${note.id}`));
     return deleteDoc(docRef)
   }

你定义docRef的方式是不正确的:collection(this.fs,Notes/${note.id})生成错误,因为在Notes/${note.id}中,当collection方法期望奇数时,您将2个段传递给它。Notes/r5GucE9DETw36sJKCMgi路径是文档路径,而不是集合路径。
另外,您尝试只将CollectionReference传递给doc()方法。
下面的代码应该可以做到这一点:

deleteNote(note: Note){
    let docRef = doc(this.fs,'Notes', note.id);
    return deleteDoc(docRef)
  }

相关问题