【问题标题】:Post data to Firebase from Angular 4从 Angular 4 将数据发布到 Firebase
【发布时间】:2019-10-01 22:56:56
【问题描述】:

我使用 Angular 4 和 AngularFire 将数据发送到 Firebase。

我需要获取一些数据,例如:姓名、国家、邮政编码以及电子邮件和密码。

更新后://

HTML 表单:

<form #formData='ngForm' (ngSubmit)="onSubmit(formData)">
 <input type="text" placeholder="Name" (ngModel)="name" name="name" class="txt" required>
 <input type="text" placeholder="Country" (ngModel)="country" name="country" class="txt" required>
 <input type="text" placeholder="code" (ngModel)="code" name="code" class="txt" required>
 <input type="text" placeholder="Email addres" (ngModel)="email" name="email" class="txt" required>
 <input type="password" placeholder="Password" (ngModel)="password" name="password" class="txt" required>
 <button type="submit" [disabled]="!formData.valid" class="basic-btn">Create Account</button>
</form>

我使用模型获取价值并使用代码发送它:

constructor(private router: Router, private db: AngularFireDatabase) {}

onSubmit(formData) {
 if(formData.valid) {
 console.log(formData.value);
 this.db.auth.createUser({
  email: formData.value.email,
  password: formData.value.password
 }).then (
   (state: AngularFireAuth) => {
    this.db.object('/users/' + state.uid).set({code: formData.value.code});
    this.router.navigate(['/login'])
  }).catch(
    (err) => {
      console.log(err);
      this.error = err;
    })
 }
}

我得到错误: 数据库没有身份验证,FireAuth 也没有createUser

this.db.auth.createUser

在此没有uid 属性

this.db.object('/users/' + state.uid).set({code: formData.value.code});

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database


    【解决方案1】:

    无法在 Firebase 的身份验证部分保存额外数据。您可以使用与身份验证部分相同的 uid 将所有额外信息保存在数据库本身中。

    constructor(private db: AngularFireDatabase) {}
    
    onSubmit(formData) {
     if(formData.valid) {
      console.log(formData.value);
      this.af.auth.createUser({
        email: formData.value.email,
        password: formData.value.password
      }).then (
        (state: FirebaseAuthState) => {
          db.object('/users/' + state.uid).set({zip: formData.value.zip});
          this.router.navigate(['/login'])
        }).catch(
          (err) => {
            console.log(err);
            this.error = err;
          })
       }
    }
    

    【讨论】:

    • 我得到:错误中的错误遇到静态解析符号值。调用函数'OpaqueToken',不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用,解析 E:/DEV/project/zmotywowanych/node_modules/angularfire2/tokens.d.ts 中的符号 FirebaseUserConfig,解析 E:/DEV/project/ 中的符号 AngularFireModule.initializeApp zmotywowanych/node_modules/angularfire2/angularfire2.d.ts,解析 E:/DEV/project/../app.module.ts 中的符号 AppModule,解析 E:/DEV/project/../app.module 中的符号 AppModule。 ts
    • 你的 AngularFire 版本是多少?
    • "angularfire2": "^2.0.0-beta.7-pre",
    • 试试“2.0.0-beta.8”
    • 这是一个已知的 angularfire 问题。尝试重新安装 firebase 库 npm uninstall firebase angularfire2 --save npm install firebase angularfire2 --save。问题在这里:github.com/angular/angularfire2/issues/843
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2019-11-07
    • 2019-07-07
    相关资源
    最近更新 更多