NullReferenceException in Xamarin Firebase connection



我正在连接我的xamarin应用程序到firebase,我创建了一个完整的CRUD函数并将其实现到我的应用程序。

我认为我做的一切都是正确的,但显然我没有,因为UPDATE和DELETE函数并没有真正工作。

我可以添加项目到数据库,但不能更新或删除它们。当我尝试更新或删除一个项目时,我在更新和删除函数上得到错误。

这是我的FirebaseHelper.cs,包含所有的CRUD函数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Firebase.Database;
using Firebase.Database.Query;
namespace ElseWareApp.Models
{
public class FirebaseHelper
{
FirebaseClient firebase = new FirebaseClient("https://urldb-4fcca-default-rtdb.firebaseio.com/");
public async Task<List<Person>> GetAllPersons()
{
return (await firebase
.Child("Persons")
.OnceAsync<Person>()).Select(item => new Person
{
Name = item.Object.Name,
PersonId = item.Object.PersonId
}).ToList();
}
public async Task AddPerson(int personId, string name)
{
await firebase
.Child("Persons")
.PostAsync(new Person() { PersonId = personId, Name = name });
}
public async Task<Person> GetPerson(int personId)
{
var allPersons = await GetAllPersons();
await firebase
.Child("Persons")
.OnceAsync<Person>();
return allPersons.Where(a => a.PersonId == personId).FirstOrDefault();
}
public async Task UpdatePerson(int personId, string name)
{
var toUpdatePerson = (await firebase
.Child("Persons")
.OnceAsync<Person>()).Where(a => a.Object.PersonId == personId).FirstOrDefault();
await firebase
.Child("Persons")
.Child(toUpdatePerson.Key)
.PutAsync(new Person() { PersonId = personId, Name = name });
}
public async Task DeletePerson(int personId)
{
var toDeletePerson = (await firebase
.Child("Persons")
.OnceAsync<Person>()).Where(a => a.Object.PersonId == personId).FirstOrDefault();

await firebase.Child("Persons").Child(toDeletePerson.Key).DeleteAsync();
}
}
}

我得到的错误在DeletePerson类在最后一行:**await firebase.Child("Persons").Child(toDeletePerson.Key).DeleteAsync();**

UpdatePerson类中的错误也在最后一行

await firebase
.Child("Persons")
.Child(toUpdatePerson.Key)
.PutAsync(new Person() { PersonId = personId, Name = name });

两个函数都给出了这个错误:

系统。NullReferenceException: 'Object reference not set to an Object instance .'

希望有人能帮忙!

如果查询返回null

var toDeletePerson = (await firebase
.Child("Persons")
.OnceAsync<Person>()).Where(a => a.Object.PersonId == personId).FirstOrDefault();

则会抛出空引用异常

await firebase.Child("Persons").Child(toDeletePerson.Key).DeleteAsync();

你应该先测试null

if (toDeletePerson != null) 
{
await firebase.Child("Persons").Child(toDeletePerson.Key).DeleteAsync();
}

相关内容

  • 没有找到相关文章

最新更新