C# 我想在我的asp.net web api应用程序中按id筛选firebase实时数据库,但我不知道如何建立查询

C# 我想在我的asp.net web api应用程序中按id筛选firebase实时数据库,但我不知道如何建立查询,c#,asp.net,firebase-realtime-database,C#,Asp.net,Firebase Realtime Database,我正在用firebase实时数据库开发一个asp.net web api项目。我使用firebaseclient库。但我想知道如何使用firebase客户端开发查询 我已经创建了获取所有供应商的查询。它正在工作 另一个是通过id获取供应商。它给出语法错误。这是行不通的 //method to get all suppliers. Working properly [Route("getAll")] public async Task<HttpResponseMessage> GetS

我正在用firebase实时数据库开发一个asp.net web api项目。我使用firebaseclient库。但我想知道如何使用firebase客户端开发查询

我已经创建了获取所有供应商的查询。它正在工作

另一个是通过id获取供应商。它给出语法错误。这是行不通的

//method to get all suppliers. Working properly
[Route("getAll")]
public async Task<HttpResponseMessage> GetSuppliers()
{
    var firebaseClient = new FirebaseClient(<firebase url>);

    //Retrieve data from Firebase
    var suppliers = await firebaseClient
    .Child("suppliers")
    .OnceAsync<SupplierModel>();

     List<SupplierModel> supplierList = new List<SupplierModel>();

     foreach (var sup in suppliers)
     {
         supplierList.Add(sup.Object);
     }
     HttpResponseMessage response;
     response = Request.CreateResponse(HttpStatusCode.OK, supplierList);
     return response;
}

//method to filter by id. Have syntax errors

[Route("addSuppllier/{supplierId}")]
public async Task<HttpResponseMessage> GetSupplierById([FromUri] string supplierId)
{
    var firebaseClient = new FirebaseClient(<firebase url>);

    //Retrieve data from Firebase
    var suppliers = await firebaseClient
    .Child("suppliers")
    .OrderBy("supplierId")
    .EqualTo(supplierId);
    List<SupplierModel> supplierList = new List<SupplierModel>();
    foreach (var sup in suppliers)
    {
        supplierList.Add(sup.Object);
    }
    HttpResponseMessage response;
    response = Request.CreateResponse(HttpStatusCode.OK, supplierList);
    return response;
}
//获取所有供应商的方法。正常工作
[路线(“getAll”)]
公共异步任务GetSuppliers()
{
var firebaseClient=new firebaseClient();
//从Firebase检索数据
var供应商=等待firebaseClient
.儿童(“供应商”)
.OnceAsync();
列表供应商列表=新列表();
foreach(供应商的var支持)
{
供应商列表。添加(辅助对象);
}
HttpResponseMessage响应;
response=Request.CreateResponse(HttpStatusCode.OK,供应商列表);
返回响应;
}
//要按id筛选的方法。存在语法错误
[路由(“addSuppllier/{supplierId}”)]
公共异步任务GetSupplierById([FromUri]字符串supplierId)
{
var firebaseClient=new firebaseClient();
//从Firebase检索数据
var供应商=等待firebaseClient
.儿童(“供应商”)
.OrderBy(“供应商ID”)
.EqualTo(供应商ID);
列表供应商列表=新列表();
foreach(供应商的var支持)
{
供应商列表。添加(辅助对象);
}
HttpResponseMessage响应;
response=Request.CreateResponse(HttpStatusCode.OK,供应商列表);
返回响应;
}
第一个查询正确检索所有供应商。
第二个查询有语法错误。

您可以尝试这种方法

FirebaseResponse response = await firebaseClient.GetAsync("suppliers");
JObject jsonResponse = response.ResultAs<JObject>();

var query = new List<SupplierModel>();
if (jsonResponse != null)
{
foreach (var item in jsonResponse)
        {
         var value = item.Value.ToString();
         var supplierModel = JsonConvert.DeserializeObject<SupplierModel>(value);

         //note: supplier model should have id attribute
         supplierModel.Id = item.Key;
         query.Add(supplierModel);
        };
 }
FirebaseResponse-response=等待firebaseClient.GetAsync(“供应商”);
JObject jsonResponse=response.ResultAs();
var query=新列表();
if(jsonResponse!=null)
{
foreach(jsonResponse中的var项)
{
var value=item.value.ToString();
var supplierModel=JsonConvert.DeserializeObject(值);
//注意:供应商模型应具有id属性
supplierModel.Id=item.Key;
查询.添加(供应商模型);
};
}

然后,如果查询不为空,则通过Id过滤查询。

您是否可以尝试将
.OrderBy(“供应商Id”)
.OrderByChild(“供应商ID”)并查看是否有效?您正在指定“Suppliers”是子级,这只是一个想法。我的集合名称是Suppliers,有一个名为supplierId的字段。所以我想按该列过滤。而且也没有名为orderByChild的函数。如果在“供应商”中有1000个数据?