Typescript Firebase未定义错误

Typescript Firebase未定义错误,typescript,firebase,firebase-realtime-database,Typescript,Firebase,Firebase Realtime Database,我在向Firebase发送空数据时遇到问题,并收到以下错误消息: 运行时错误 Reference.update失败:第一个参数在属性中包含未定义的 我有: public save(url: string, params: any) { return this.af.database.ref('alunos').push().set(params); } 作为params,我将发送: this.aluno = { bairro: ''

我在向Firebase发送空数据时遇到问题,并收到以下错误消息:

运行时错误 Reference.update失败:第一个参数在属性中包含未定义的

我有:

   public save(url: string, params: any) {
        return this.af.database.ref('alunos').push().set(params);
    }
作为params,我将发送:

    this.aluno = {
            bairro: '',
            celular: '',
            cep: '',
            cidade: '',
            cpf: '',
            dataNascimento: '',
            email: '',
            nome: '',
            numero: null,
            rg: '',
            rua: '',
            ativo: true,
            genero: null,
            telefone: '',
            uf: ''
        };

我已经知道Firebase不接受未定义,但我使用null,所以这不应该发生,对吗?有什么方法可以在不改变数据结构(如字符串)的情况下解决此问题

您不能将
null
传递给
set
命令

set
将创建一个新对象。它不用于更新现有对象

因此不需要null,因为在创建时会忽略它。您应该从对象中删除
numero
genro

this.aluno = {
  bairro: '',
  celular: '',
  cep: '',
  cidade: '',
  cpf: '',
  dataNascimento: '',
  email: '',
  nome: '',
  rg: '',
  rua: '',
  ativo: true,
  telefone: '',
  uf: ''
};
如果要更新现有对象,则在执行命令
this.af.database.ref('alunos').update(params)时接受
null


有关
set
update
之间差异的更多信息,请阅读

您是否能够将您试图发布的内容分享给firebase,以便我们更好地了解该问题。您可以通过
null
而不会出现问题。现在,我希望您不理解。您是否正在使用
angularfire2
?这是一个有效的命令<代码>返回这个.af.database.ref('alunos').push().set(params)不应该是
这个.af.list('alunos').push(params)?@Sketch我正在使用ionic,this.af.database.ref('alunos').push().set(params);是错误的方式,现在我使用这个.af.database.ref('alunos').push(params);我应该使用列表(“alunos”)吗?这有什么区别吗?我不确定,我还没有看过
ref
的文档。使用
list
将为数据库写入生成唯一键。