如何在firebase中添加父集合中子集合

dgenwo3n  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(104)

所以我有一个问题,我不能想其他的,我怎么能添加另一个集合在父/第一个集合,让说,图表应该看起来像这样

owner-item:
  group-item: [],
  single-item: []

字符串
假设在firebase-collection.js中,它看起来像这样

import { collection } from 'firebase/firestore'
import { db } from './firebase'

export const owneritemsRef = collection(db,'owner-items')


现在我把收藏品像这样导出

let uploadUserStorageTask = uploadBytesResumable(list[i],pictures[j].data)
    ....
},(err) => {
    console.log(err)
},() => {
    getDownloadURL(uploadUserStorageTask.snapshot.ref)
    .then(async (downloadURL) => {
        await setDoc(doc(db,`owner-items`,`${currentUser?.email}-${uid}`),{
        creator:username,name:name,img:downloadURL,email:currentUser?.email
        })
        .then( res => {})
        .catch(err => {})
        })
})


但是因为我有组图像,我想让它们设置在一个组项集合中,但是我在想await setDoc或者其他我应该添加的东西,使它像owner-item父集合中的一个组项集合,但是我怎么做呢?
我搜索与它相关的东西,它可能是这样的?LINK.但我想要setDoc,因为我可以改变我的document_id

更新是这样的. LINK

import { doc } from "firebase/firestore"; 

const messageRef = doc(db, "rooms", "roomA", "messages", "message1");


我很抱歉它的关于文件内的集合.让说

await setDoc(..., {
   group_item: {},
   single_item: {},
}


基于我的旧片段,只是添加这个新的东西...这是正确的方法吗?或者像子集合一样的东西,你知道我的意思。

更新2假设我有owner-items

await setDoc(doc(db,`owner-items`,`${currentUser?.email}-${uid}`),{
    group_items:[{
        id:1,
        img:file-image
    }], 
    single_item:[{
        id:1,
        img:file-image
    }]
})

qpgpyjmq

qpgpyjmq1#

如果我正确理解了你的回答和评论,下面的,使用批处理写,应该做的伎俩。

import { writeBatch, doc } from "firebase/firestore";

const batch = writeBatch(db);

const parentDocRef = doc(db, `owner-items`, `${currentUser?.email}-${uid}`);
batch.set(parentDocRef, {
    single_item: [{
        id: 1,
        img: file - image
    }]
});

const group_items = [
    {
        id: 1,
        img: file - image
    },
    {...}
];

group_items.forEach(elem => {
    const groupItemDocRef = doc(db, `owner-items`, `${currentUser?.email}-${uid}`, 'group-items');
    batch.set(groupItemDocRef, {
        item: elem
    });
});

await batch.commit();

字符串
请注意,批处理写入最多可包含500个操作,因此group_items数组最多应包含499个元素。

相关问题