如何检查集合和文档是否存在,如果不存在,则使用 .net 在 FireStore 中创建具有特定 ID 的集合和文档

米米特

在 Firestore 中,您如何检查集合和文档是否已存在,如果不存在,则如何使用 .NET 创建具有特定 ID 的新集合和文档?

米米特

根据这个基于节点的问题的答案,将自动创建集合,但即使如此,您如何做到这一点并不容易,尤其是在 .NET 中。如果它是树下的多个集合,则更是如此。例如,这是我们将尝试添加的文档类:

using Google.Cloud.Firestore;

namespace FirestoreTest.Models
{
    [FirestoreData]
    public class ClassicGame
    {
        public ClassicGame()
        {

        }

        [FirestoreProperty]
        public string title { get; set; }
        [FirestoreProperty]
        public string publisher { get; set; }
    }
}

这是一个示例函数,它执行检查集合和文档是否存在于 PC/Games/{publisher}/{title} 中,如果不存在,则使用 gameId 作为文档的 ID 创建它。它使用Google.Cloud.FirestoreGoogle.Cloud.Firestore.V1Beta1

public async Task<bool> AddPcGame(string gameTitle, string gamePublisher, string gameId)
        {
            string publisherCollectionPath = "PC/Games/" + gamePublisher;

            //Try and get the document and check if it exists
            var document = await db.Collection(publisherCollectionPath).Document(gameId).GetSnapshotAsync();
            if (document.Exists)
            {
                //document exists, do what you want here...
                return true;
            }
             //if it doesn't exist insert it:  
            //create the object to insert
            ClassicGame newGame = new ClassicGame()
            {
                title = gameTitle,
                publisher = gamePublisher
            };
            //Notice you have to traverse the tree, going from collection to document.  
            //If you try to jump too far ahead, it doesn't seem to work. 
            //.Document(gameId).SetAsync(newGame), is what set's the document's ID and inserts the data for the document.
            CollectionReference collection = db.Collection("PC");
            var document2 = await collection.Document("Games").Collection(gamePublisher).Document(gameId).SetAsync(newGame);

            return true;
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章