【问题标题】:Cannot read property 'push' of undefined -Angular ,Firebase无法读取未定义-Angular,Firebase 的属性“推送”
【发布时间】:2018-08-02 12:56:06
【问题描述】:

在这里我添加了我的服务文件代码。我想将数据存储在 firebase 中,但我无法获取数据。我在控制台中获取了我的数据,但出现了一些错误并且没有推送到 firebase 中

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Contact } from './logic/contact';
@Injectable({
  providedIn: 'root'
})
export class DataService {
list: AngularFireList<any>;
createcontact:Contact = new Contact();
  constructor(private firebase:AngularFireDatabase) { } 
  insertdata(contact: Contact) {
// here I get my data in console
        console.log(contact);
        this.list.push({
          name: contact.name,
          email:contact.email,
          phoneno:contact.phoneno,
          notes:contact.notes,
          address:contact.address,
          relation:contact.relation 
        });
      }
  updatedata(contact: Contact) {
    this.list.update(contact._id,{
      name: contact.name,
      email: contact.email,
      phoneno: contact.phoneno,
      notes: contact.notes,
      address: contact.address,
      relation: contact.relation
    });
  }
  }

错误是这样的

ERROR TypeError: Cannot read property 'push' of undefined

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database


    【解决方案1】:

    这不是您将数据推送到firebase 的方式。请尝试以下操作:

        export class DataService {
        list: AngularFireList<any>;
        createcontact:Contact = new Contact();
          constructor(private firebase:AngularFireDatabase) { } 
          insertdata(contact: Contact) {
        // here I get my data in console
                console.log(contact);
                this.list = this.firebase.list('/lists');
                if (contact) {
                 this.list.push({
                  name: contact.name,
                  email:contact.email,
                  phoneno:contact.phoneno,
                  notes:contact.notes,
                  address:contact.address,
                  relation:contact.relation 
                });
              }
            }
    
    
    
    updatedata(contact: Contact) {
        if ( contact) {
                this.list.set(contact._id,{
                  name: contact.name,
                  email: contact.email,
                  phoneno: contact.phoneno,
                  notes: contact.notes,
                  address: contact.address,
                  relation: contact.relation
                });
              }
        }
     }
    

    【讨论】:

    • [ts] 类型“ThenableReference”不可分配给类型“AngularFireList”。 “ThenableReference”类型中缺少属性“查询”。
    • @PoojaPatel 我的错,我打错了,检查编辑
    • Reference.push 失败:第一个参数在属性“list.name”中包含未定义
    • 表示你的对象联系人是空的,所以检查它的值
    • 对于像我这样试图找出问题和答案代码之间工作差异的人,@Melchia 正在定义 Firebase 中的哪个列表将其添加到这一行:this.list = this.firebase.list('/lists');
    【解决方案2】:

    以防万一其他人遇到这种问题,我通过执行以下操作解决了我的问题:

    将变量定义为:

    list$: AngularFireList<any[]>;
    

    然后,在构造函数中将其初始化为:

    this.list$ = firebase.list('/contact'); //your path api
    

    之后,push可以如下:

    this.list$.push([whatever]);
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 2020-05-23
      • 2017-03-31
      • 2017-11-23
      • 2015-04-06
      • 1970-01-01
      • 2019-02-02
      • 2021-10-13
      • 2021-03-06
      相关资源
      最近更新 更多