C# 我想在我的asp.net web api应用程序中按id筛选firebase实时数据库,但我不知道如何建立查询
我正在用firebase实时数据库开发一个asp.net web api项目。我使用firebaseclient库。但我想知道如何使用firebase客户端开发查询 我已经创建了获取所有供应商的查询。它正在工作 另一个是通过id获取供应商。它给出语法错误。这是行不通的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
//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个数据?