如何解决你如何在 Xamarin 的 firebase 中使用 PutAsync()
注意:我有一个解决方案,但我将把这段代码留给建设性的批评/帮助,以帮助其他可能为此而苦苦挣扎的人。
嗨,我已经在 github/firebase api 上搜索了表单/示例,但没有找到任何关于我正在做的事情。这应该很简单,我只需要一个如何实际操作的示例。 (第一次使用 firebase,过去只使用过 sql)
我有一个 firebase 实时数据库,下面是注册新用户/驱动程序的函数:
public async Task<bool> RegisterNewDriver(string licenceno,string companyname,string vatno,string wasteno )
{
var result = await firebase
.Child("RegisterDriverTable")
.PostAsync(new RegisterDriver() {
DriverId = Guid.NewGuid(),CompanyName = companyname,VatNo = vatno,WasteNo = wasteno }) ;
if (result.Object != null)
return true;
else
return false;
}
我想要做的是更改一个变量,即如果用户的 CompanyName 更改,我希望能够更新数据库中的记录 - 更新 CompanyName 属性而不影响其他孩子,如 vatno 或 wasteno。
我已经试过了:
await firebase
.Child("RegisterDriverTable")
.Child(toUpdateDriver.Key)
.PutAsync(new RegisterDriver()
{
CompanyName = "A Generic Company Inc";
});
但这只会覆盖驱动程序的详细信息。
我目前正在做的只是手动完成:
var toUpdateDriver = (await firebase
.Child("RegisterDriverTable")
.OnceAsync<RegisterDriver>()).Where(a => a.Object.Fk_UserId == (System.Guid)App.Current.Properties["UserGuid"]).FirstOrDefault();
if (toUpdateDriver != null) {
var entry = new RegisterDriver() { DriverRange = range };
await firebase
.Child("RegisterDriverTable")
.Child(toUpdateDriver.Key)
.PutAsync(new RegisterDriver()
{
DriverId = toUpdateDriver.Object.DriverId,LicenceNo = toUpdateDriver.Object.LicenceNo,CompanyName ="A Generic Company Inc",VatNo = toUpdateDriver.Object.VatNo,WasteNo = toUpdateDriver.Object.WasteNo,});
}
它有效,但它有很多冗余。
有谁知道如何在 Xamarin 中执行此操作,或者是否有人可以向我指出如何正确使用 PutAsync 的示例?
感谢任何帮助?
解决方法
在输入这个问题后立即想到了一个解决方案?。我已经修改了上面的代码,效果很好。我仍然会向任何可能发现此代码有用的人发布问题。
public async Task<bool> UpdateDriverRange2(int range)
{
var toUpdateDriver = (await firebase
.Child("RegisterDriverTable")
.OnceAsync<RegisterDriver>()).Where(a => a.Object.Fk_UserId == (System.Guid)App.Current.Properties["UserGuid"]).FirstOrDefault();
if (toUpdateDriver != null)
{
toUpdateDriver.Object.CompanyName = "A Generic Company Inc";
await firebase
.Child("RegisterDriverTable")
.Child(toUpdateDriver.Key)
.PutAsync(toUpdateDriver.Object);
return true;
}
else
return false;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。