我正在尝试通过Angular 6和Typescript在firebase中进行基本的CRUD操作。我正在使用Webpack捆绑它。启动应用程序时,不会引发任何错误,但是当我尝试将其保存到Firebase实时数据库时,我遇到了“如何修复'TypeError:“类构造函数必须使用| new |来调用”。
这是我第一次使用Firebase和angularfire2。关于Angularfire2官方文档中的CRUD实现,我发现所做的工作没有太大的区别。我也尝试将浏览器从Mozilla切换到Chrome,但是问题似乎与浏览器无关。我想知道它是否与rxjs有关,但是我已经运行了
$npm install rxjs-compat
它也没有解决!
user.service.ts
import { AngularFireDatabase, FirebaseObjectObservable} from 'angularfire2/database';
import { Injectable } from '@angular/core';
import * as firebase from 'firebase';
import { AppUser } from './models/app-user';
@Injectable({
providedIn: 'root'
})
export class UserService {
constructor(private db: AngularFireDatabase) {}
save(user: firebase.User) {
this.db.object('/users/' + user.uid).update({
name: user.displayName,
email: user.email
})
.catch(error => console.log(error));
}
get(uid:string): FirebaseObjectObservable<AppUser>{
return this.db.object('/users/' + uid);
}
}
app.component.ts
import { UserService } from './user.service';
import { Router } from '@angular/router';
import { AuthService } from './auth.service';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
constructor(private userService: UserService, private auth: AuthService, router: Router){
auth.user$.subscribe(user => {
if (user) {
userService.save(user);
let returnUrl = localStorage.getItem('returnUrl');
router.navigateByUrl(returnUrl);
}
});
}
}
预期结果: save(user)函数更新Firebase实时数据库上的信息,然后重新路由到上一页。
实际结果: 登录时,您将重定向回到登录页面,数据库上没有任何更新,并引发以下错误: