C# 使用c中的Firebase按键获取元素#
我遇到了一个问题,我的firebase数据库中有一个guid样式的模式,我想显示一个C# 使用c中的Firebase按键获取元素#,c#,firebase,firebase-realtime-database,C#,Firebase,Firebase Realtime Database,我遇到了一个问题,我的firebase数据库中有一个guid样式的模式,我想显示一个DisplayText文本,但由于某种原因,我的代码无法工作。我正在使用FirebaseDatabase.Net包装器。如何映射它,以便使用guid方式模式正确地从数据库中读取?谢谢你的帮助 代码: private异步任务ShowQuestion() { var firebase=new FirebaseClient(“https://PROJECT_URL.firebaseio.com/"); var dino
DisplayText
文本,但由于某种原因,我的代码无法工作。我正在使用FirebaseDatabase.Net包装器。如何映射它,以便使用guid方式模式正确地从数据库中读取?谢谢你的帮助
代码:
private异步任务ShowQuestion()
{
var firebase=new
FirebaseClient(“https://PROJECT_URL.firebaseio.com/");
var dinos=等待火力基地
.儿童(“问题”)
.OrderByKey()
.StartAt(“显示文本”)
.LimitToFirst(1)
.OnceAsync();
foreach(以恐龙为单位的var恐龙)
{
控制台写入线(dinos);
}
我试着做:
string page = "https://PROJECT_URL.firebaseio.com/Questions/DisplayText.json?orderBy"DisplayText"&limitToFirst=1";
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(page))
using (HttpContent content = response.Content)
{
// Reading the string.
string result = await content.ReadAsStringAsync();
Console.WriteLine(result);
// Getting a reference to the text component.
questionDisplayText = GetComponent<Text>();
questionDisplayText.text = result.ToString();
questionDisplayText.text = result.Trim(new char[] {'"'});
}
字符串页=”https://PROJECT_URL.firebaseio.com/Questions/DisplayText.json?orderBy“DisplayText”&limitToFirst=1”;
使用(HttpClient=new HttpClient())
使用(httpresponsemessageresponse=wait client.GetAsync(第页))
使用(HttpContent=response.content)
{
//读字符串。
字符串结果=等待内容。ReadAsStringAsync();
控制台写入线(结果);
//获取对文本组件的引用。
questionDisplayText=GetComponent();
questionDisplayText.text=result.ToString();
questionDisplayText.text=result.Trim(新字符[]{'''});
}
Firebase查询采用两步方法:
StartAt()
这样的过滤操作会将键与您传递的值进行比较。由于没有键DisplayText
,因此没有结果
如果你想阅读第一个问题,你不应该使用startAt()
如果您希望返回按其DisplayText
属性值排序的结果,则如下所示:
FirebaseClient("https://PROJECT_URL.firebaseio.com/");
var dinos = await firebase
.Child("Questions")
.OrderByChild("DisplayText")
.LimitToFirst(1)
由于您表示要使用REST API,下面是一个如何使用REST API的示例:
https://stackoverflow.firebaseio.com/59384124.json?orderBy="DisplayText"&startAt="How"
如果要在代码中嵌入此字符串,您有几个选项。主要选项包括:
string page = "https://PROJECT_URL.firebaseio.com/Questions/DisplayText.json?orderBy=\"DisplayText\"&startAt=\"How\"&limitToFirst=1";
或
别忘了:为了能够在服务器上进行筛选,您需要在安全规则中定义一个索引。在我的例子中,我是这样做的:
"59384124": { ".indexOn": "DisplayText" },
另见:
- 文件
- 这篇博文发表在
https://PROJECT_URL.firebaseio.com/Questions/bd341******/json?orderBy“DisplayText“&limitToFirst=1
另请参见hey@Frank,你能给我看一个关于http web请求的第二个解决方案的示例吗?我在中显示了URL。如果你在这方面遇到困难,请显示你对我提供的信息做了什么。请查看带有屏幕截图的“我尝试过做”部分的更新问题。如果你使用“
要终止整个字符串,您不能在该字符串中使用相同的符号来包装DisplayText
字段名。大多数编程语言允许您使用“
或”
,这样您就可以在整个字符串中使用”
。除此之外,我的第一条评论中似乎遗漏了一个=
。所以”https://PROJECT_URL.firebaseio.com/Questions/bd341******/json?orderBy“DisplayText”&limitToFirst=1'
或"https://PROJECT_URL.firebaseio.com/Questions/bd341******/在这种情况下,DisplayText.json?orderBy='DisplayText'&limitToFirst=1“
。
string page = "https://PROJECT_URL.firebaseio.com/Questions/DisplayText.json?orderBy=\"DisplayText\"&startAt=\"How\"&limitToFirst=1";
string page = @"https://PROJECT_URL.firebaseio.com/Questions/DisplayText.json?orderBy=""DisplayText""&startAt=""How""&limitToFirst=1";
"59384124": { ".indexOn": "DisplayText" },