2017-09-04 154 views
0

我在与空数据发送到火力地堡的问题,我收到此错误信息:火力地堡未定义的错误

运行时错误 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,所以这不应该发生?任何方式来解决这个问题,而不改变数据结构像字符串?

+0

您是否可以分享要发布到Firebase的内容,以便我们更好地了解问题。 你可以通过'null'没有问题。 – sketchthat

+0

你有没有去,我希望你不要去。 –

+0

你正在使用'angularfire2'吗?这是一个有效的命令; (返回this.af.database.ref('alunos')。push()。set(params);'不应该'this.af.list('alunos')。push(params);'? – sketchthat

回答

1

您无法将null传递给set命令。

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

因此不需要null,因为它在创建时被忽略。你应该从你的对象中删除numerogenero

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

如果你想要当你命令this.af.database.ref('alunos').update(params);

更新现有的对象,然后null被接受有docs的读关于setupdate之间的差异的详细信息。