Firebase Firestore数据复制与在字段中存储文档引用

Firebase Firestore数据复制与在字段中存储文档引用,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我正在为Firestore构建数据模型,并试图决定是存储文档引用还是复制数据。从文档资源字段中检索文档看起来非常简单,而且客户端似乎需要对文档引用执行更少的写操作,这里是否缺少一些内容。。。在什么情况下应该选择复制数据还是存储文档引用…如果不知道具体的用例,就不可能说什么是最好的。但是,一般来说,如果要减少GET的数量和总体延迟,应该复制数据。如果要减少存储总量并增加延迟,请使用单独的文档 要想真正找到最好的方法,您应该使用有关数据的实际或预期数据进行基准测试和估算计费成本。最好的解决方案是将两

我正在为Firestore构建数据模型,并试图决定是存储文档引用还是复制数据。从文档资源字段中检索文档看起来非常简单,而且客户端似乎需要对文档引用执行更少的写操作,这里是否缺少一些内容。。。在什么情况下应该选择复制数据还是存储文档引用…

如果不知道具体的用例,就不可能说什么是最好的。但是,一般来说,如果要减少GET的数量和总体延迟,应该复制数据。如果要减少存储总量并增加延迟,请使用单独的文档


要想真正找到最好的方法,您应该使用有关数据的实际或预期数据进行基准测试和估算计费成本。

最好的解决方案是将两者结合起来。例如,您有两个集合—用户及其文章。将每篇新文章保存在文章集合以及用户内部的集合中,并添加一个额外字段以引用文章。请参见以下示例:

export const addUserArticle = async (userId, state) => {
    const { title, article } = state;
    const createdAt = new Date();

    const articleRef = firestore.collection("articles").doc();

    try {
        await articleRef.set({
            title: title,
            body: body,
            createdAt: createdAt,
            createdBy: firebase.firestore().doc(`/users/${userId}`)
        });
    } catch (err) {
        console.error("Error saving article to articles in database:", err.message);
    }

    const userArticleRef = firestore.collection("users").doc(userId).collection(articles).doc(articleRef.id);
    try {
        await userArticleRef.set({
            title: title,
            body: body,
            createdAt: createdAt,
            articleRef: firebase.firestore().doc(`/articles/${articleRef.id}`)
        });
    } catch (err) {
        console.error("Error saving article to user in database:", err.message);
    }
}

嗨,道格,这是可能的用例。。。收款A->B.Document->C.Sub-Collection->D.Document with 5个字段->E.Sub-Collection->F.Document | Collection B->2.Document->3.Sub-Collection->case 1:4.Document->字段类型引用到D.Document或case 2:4.D.Document的副本。收藏A和B将由两个不同的客户阅读,这并没有真正的帮助,因为它不是非常具体,所以仍然建议使用实际或预期数据进行基准测试和评估。