簡體   English   中英

無效的文檔參考。 文檔引用必須有偶數個段,但用戶有 1'

[英]Invalid document reference. Document references must have an even number of segments, but Users has 1'

我正在將 Firestore 與 SwiftUI 一起使用,並嘗試進行一個簡單的查詢以從子集合中獲取文檔:

struct MyCardsView: View {
    
    @State var myCards = [MyCard]()
    
    @State var show: Bool = false
    @State var selectedId: String = ""
    
    var body: some View {
        
        VStack {
            
            List(self.myCards){i in
                
                Button(action: {
                    
                    self.selectedId = i.card_id
                    self.show.toggle()
                    
                    
                }) {
                    
                    MyCardCell(cardId: i.card_id)
                }
                
            }
            
        }
        .onAppear {
            let db = Firestore.firestore()
            if let uid = Auth.auth().currentUser?.uid {
                db.collection("Users").document(uid).collection("Fiches").order(by: "date", descending: true).addSnapshotListener { (snap, err) in
                    
                    guard let documents = snap?.documents else {
                        print("No documents")
                        return
                    }
                    
                    self.myCards = documents.compactMap({ (queryDocumentSnapshot) -> MyCard? in
                        return try? queryDocumentSnapshot.data(as: MyCard.self)
                    })
                    
                }
            }
        }
        .sheet(isPresented: self.$show){
            CardsView(cardId: self.selectedId)
        }
        
    }
}

這種觀點一直有效,但從昨天開始,我收到以下非常奇怪的錯誤:

由於未捕獲的異常“NSInternalInconsistencyException”而終止應用程序,原因:“FIRESTORE INTERNAL ASSERTION FAILED:文檔引用無效。 文檔引用必須有偶數個段,但用戶有 1'

我真的不明白,因為路徑是正確的,並且子集合存在......

我有同樣的問題,但只在我的畫布預覽中。 該應用程序運行良好。 我已經查看了我的代碼並認為它​​可以歸結為這個代碼塊,因為只有一個對集合的引用而不是對文檔 ID 的引用,但是在 Firebase 文檔中,它說這段代碼很好,即使它只有一個段。 (雖然我只是猜測)

public func fetchAllArtists(completion: @escaping ([Artist]) -> Void) {
    var _artists: [Artist] = []
    database
        .collection(ContainerNames.artists)
        .getDocuments { snapshot, error in\
            guard error == nil else { return }
            for document in snapshot!.documents {
                // do stuff
            completion(_artists)
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM