import { Injectable } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
/*
Generated class for the FirebaseService provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class FirebaseService {
users:FirebaseListObservable<any>;
constructor(public angularFire: AngularFire,) {
console.log('Hello FirebaseService Provider');
this.users=this.angularFire.database.list('users');
}
saveuser(user){
this.users.push(user);
}
}
嗨,在此代码中,我正在尝试将新用户添加到用户表下的Firebase表中,问题是我找不到设置的方法,我只能推送是我做错了什么吗?感谢您的帮助
AngularFire2不会公开列表可观察量的set
。您应该改用update
。
当您查看可观察的对象时,这是有道理的,这确实会暴露set
。在可观察对象上调用set
时,数据库对象的全部内容将替换为指定的值。
通常,您永远不会想要替换整个列表,因此不公开set
是有意义的。update
是合适的,因为您正在更新列表以添加新用户。
this.users.update(user.id /* or whatever is to be the key */, user);
或者,您可以使用列表可观察量的 SDK 引用来调用set
:
this.users.$ref.ref.child(user.id /* or whatever is to be the key */).set(user);
请尝试以下作为示例案例,其中:
list.$add({ foo: "bar" }(.then(...(;
此示例取自 AngularFire 文档。