1回の操作でFirebase上で2つのノードを削除するために結合操作を実行します。私はノードの場所がある場合、ノードを削除するremove()があることを知っています。しかし、remove()操作の戻り値は何ですか?約束か観察可能なのか?他の削除操作を実行するか、削除操作が成功した(またはエラーがあります)コンポーネントに通知するために、削除操作が成功したことをどのように知ることができますか?AngularFire2またはFirebaseをAngular2で使用して複数の場所を「削除する」方法
例(AngularFireのヘルプを削除するマルチロケーションに助けを必要とする)提供:
constructor(private db:AngularFireDatabase, @Inject(FirebaseRef) fb) {
this.sdkDb = fb.database().ref();
}
deleteTask(taskId: string, jobtypeId: string): boolen {
const taskObservable = this.db.object('tasks' + '/' + taskId);
const taskPerJobtypeObervable = this.db.object('tasksPreJobtype' + '/' + jobtypeId + '/' + taskId);
taskObservable.remove()
.then(_ => {
console.log('success');
taskPerJobtypeObervable.remove()
.then(_ => {
return ture
});
})
.catch(err => {console.log(err, 'You dont have access!'), return false});
}
あなたは私がチェーンに私は本当に避けたい約束、として削除を必要と見ての通り。私はこれをobservableパターンにしたいのですがなぜ私はangularFire2を使用しますか?したがって、ブール値を返す代わりに、私は観察可能な値を返したいと思います。そして、私はこれを複数の場所の削除にしたいと思います。どうすればこのコードをリファクタリングできますか?どうもありがとうございます!
のアイデアは「ヌル」に両方の場所にupdate()を使用することであり、それはFirebaseにそれを取り除くします:フランクに
約束を返しているようです:https://github.com/angular/angularfire2/blob/c3a954cd857fc297438f53d3a1e3bf69b6af01c2/src/database/firebase_list_observable.ts#L42。また、一つのマルチロケーション 'update()'コールを使用して、それらをすべて1回の呼び出しで削除することもできます。 https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html –
迅速な共通点のためにフランクに感謝します!はい、それはangularFire remove()で約束を返します。しかし、これは複数の場所を持つ「削除」なので、もし私がこの約束を結ぶなら、それはかなり醜いように見えます。私はあなたが言及した "複数の場所の更新()"メソッドを使用したいと思います。しかしリンクには更新例しかありません。どうすれば削除できますか(私はノードを削除するために更新を使用することはできませんか?)これを明確にするための例を示しました。 –
nullを投稿すると削除されます。ああ、私はあなたがすでにそれを見つけたのを見ます。 :-) –