【问题标题】:C# Firebase Restful Post generate unique keyC# Firebase Restful Post 生成唯一密钥
【发布时间】:2018-09-26 11:23:17
【问题描述】:

下面是我用来向 firebase 数据库发出 POST 请求的代码。 我该怎么做才能让子序列 POST 请求按升序排列?我不希望 firebase 自动生成唯一 ID。

可以在此处查看示例。 enter image description here

public void postEachFirebaseMessage(string dbcolName)
    {
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(new
        {
            user = "UserNameValue",
            message = "MessageValue",
        });
        var request = WebRequest.CreateHttp(@"" + config.BasePath + dbcolName + ".json?auth=" + config.AuthSecret);
        request.Method = "POST";
        request.ContentType = "application/json";
        var buffer = Encoding.UTF8.GetBytes(json);
        request.ContentLength = buffer.Length;
        request.GetRequestStream().Write(buffer, 0, buffer.Length);
        var response = request.GetResponse();
        json = (new StreamReader(response.GetResponseStream())).ReadToEnd();
    }

【问题讨论】:

  • 找到了解决方案。只需将请求格式更改为“PUT”即可。它不会生成任何唯一 ID。

标签: c# firebase firebase-realtime-database


【解决方案1】:

我不希望 firebase 自动生成唯一 ID。

如果您不希望 Firebase 为您自动生成唯一密钥,您可以生成自己的唯一密钥,然后将 PUT 数据发送到该完整网址。所以是这样的:

var request = WebRequest.CreateHttp(@"" + config.BasePath + dbcolName + "/yourOwnUniqueKey" + ".json?auth=" + config.AuthSecret);
request.Method = "PUT";

但如前所述:您需要确保自己的密钥是唯一的。这是一个完全有效的方案,但您必须自己编写生成唯一键的代码。

如果您想知道为什么 Firebase 不简单地使用像 012 这样的键,我建议您阅读这篇博文:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

【讨论】:

  • “PATCH”请求方法为我解决了问题,而不是“POST”,因为如上所述并没有解决问题,而是多个调用在“yourOwnUniqueKey”下生成了多个孩子。密钥应该“更新”而不是“插入新”记录。
  • @Veljac A PUTPATCH 都可以在一个位置下写入多个子节点。唯一的区别是PUT 会替换该位置下的所有数据,而PATCH 只会更新您在请求中指定的子节点/属性。
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 2023-04-04
  • 2018-03-04
  • 2013-07-18
  • 2012-04-09
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多