繁体   English   中英

Firebase Firestore 如何添加子集合

[英]Firebase Firestore how to add subcollection

嗨,我是编程新手,一直在使用 Firebase Firestore 作为我的数据库的网站上工作。

我想通过使用文档 ID 在我已经存在的集合('Einkaufsliste')中创建一个子集合。 但相反,它会创建一个具有不同文档 ID 和子集合的新文档。 使用 onClick 方法创建购物车。 计数器用于检查当前用户 ID 是否已经存在

在此处输入图像描述

在此处输入图像描述

继承我的 JavaScript 代码

function clickCart() {
var docID = '';
var user = firebase.auth().currentUser;
console.log(counter)
if(counter < 1) {
    console.log('DocID: ' + docID);
    firebaseDatabase.collection('Einkaufsliste').doc().set({
        UserID: user.uid,
        UserName: user.displayName
    })
    .then(() => {
        console.log("%c Document successfully written!", 'color: green' );
        counter = counter + 1
    })
    firebaseDatabase.collection('Einkaufsliste').where('UserID', '==', user.uid).get()
    .then((snapshot) => {
        snapshot.docs.forEach(documentUserUi => {
            console.log('Function works!')
            console.log(documentUserUi.id);
            docID = documentUserUi.id;
            console.log('DocID: ' + docID);

        })
    })
    console.log("hier!")
    console.log('DocID: ' + docID);
    firebaseDatabase.collection('Einkaufsliste').doc(docID).collection('Warenkorb').doc().set({
        WarenkorbName: 'test'
    })

} else {
    console.log("%c User already exists and can't be added", "color: yellow")
    console.log(counter)

}

}

编辑我认为我发现问题docID似乎是空的,但仍然需要测试。 也出于某种原因 console.log('hier') output 早于 console.log('Funktion works!')

.set()接受 object 作为参数,不能是 null。 您将提供如下所示的文档 ID:

firebaseDatabase.collection('Einkaufsliste').doc(docID).collection('Warenkorb').doc("someDocumentId").set({
        WarenkorbName: 'test'
    })

但是,如果您不关心文档 ID,那么您可以使用 firestore 通过使用.add()方法生成的随机 ID:

firebaseDatabase.collection('Einkaufsliste').doc(docID).collection('Warenkorb').add({
        WarenkorbName: 'test'
    })

对于 Firebase 9 这是一个有效的示例:

import { db } from "../firebase"; // your local firebase.js
import { addDoc collection } from "firebase/firestore";

const docRef = await addDoc(
      collection(db, "users", "sadasdsdasas", "posts"),
      {
        description: "test Description",
        title: "Test",
      }
    );


console.log("Document written with ID: ", docRef.id);

details:
"users" => parentCollection
"sadasdsdasas" => parent collection id
"posts" => subCollection to into the user with the id "sadasdsdasas"

文档: https://firebase.google.com/docs/firestore/data-model

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM