0

私はちょっとした問題を抱えています。私はそれを解決しようと夢中になっています。AngularFire2がiOSブラウザで無限ループを引き起こしています

メタデータを操作するためにAngularFire2でWebPackを使用するAngular2アプリがあります。現在取り組んでいるのは、ファイルをFirebase Storageにアップロードし、その場所のURLを取得し、そのURLをファイルがアップロードされたオブジェクトのメタデータに添付して、必要に応じて表示する機能です。これはすべてのデスクトップやアンドロイドブラウザではうまくいきますが、ほとんどのiOSブラウザ(Safari、Chrome、Firefox、すべて同じ結果)でコンソールやシステムエラーが発生しても失敗します。リロード、何もできないが強制的にタブやブラウザのアプリケーションを閉じてリロードする。

ここに私のコードの内訳です:

これはFirebaseListObservableをループし、ビュー内のデータを表示するHTMLです:

ファイルのアップロード
<div *ngFor="let item of items | async"> 
    <input type="file" name="file" id="{{ item.$key }}" class="inputfile" (change)="uploadPicture($event, item)"/> 
    <label [attr.for]="item.$key">{{item.name}}</label> 
    <img *ngIf="item.fileUrl" src="../../assets/img/star.png" class="cell-img" (click)=showImg(item.fileUrl)> 
</div> 

firebase.storage().ref().child('images/' + filename).put(file, metadata).then(snapshot => this.obtainUploadUrl(snapshot, key, filename)); 

をファイルロケーションURLを取得し、firebaseListObservableにあるfirebaseオブジェクトキーを渡した後、私は次のようにリストを更新します:

console.log("Updating", key, "With", data); 
this.af.database.list('/games/' + this.currentGame.$key + '/items').update(key, data); 

私の知る限りの失敗は、私は、ファイルのアップロードのためのスナップショットを取得した後itemsリストまたはローカルthis.itemsを操作どこでも起こります。 FirebaseListObservableのオブジェクトを更新、プッシュ、または削除しようとすると、モバイルサイトが機能しなくなり、無限ループに陥ります。

iOSが使用していないFirebaseオブジェクトを考慮していないか、または誤って使用しているケースがいくつかあります。

私は何の解決策も見つけられないかもしれませんが、Firebaseを使用しないように助けてください。

UPDATE

それで離れてハッキングの別の日の後、私はfirebaseは、iOSのブラウザ内で、少なくとも、入力クリック機能、内ビュー項目の更新を好きではないことを見出しました。そのuploadPicture機能インサイド

<input type="file" name="file" id="{{ item.$key }}" class="inputfile" (change)="uploadPicture($event, item, items)"/> 

私は2行のコード実行した場合、:

firebase.storage().ref().child('images/' + filename).put(file, metadata).then(snapshot => console.log("File uploaded!", snapshot)); 
this.items.update(key, {fileName: filename}); 

を私は、iOSで同じエラーを取得します。しかし、私が他のfirebaseオブジェクトを変更しようとすると、私は凍結しません。まだこれがiOSだけではどうして失敗するのかまだ分かりませんが、この問題を解決する方法はまだありません。

答えて

0

最後に、iOSがファイルをアップロードして同じ機能でfirebaseオブジェクトを変更することを拒否したという問題がありました。入力されたHTMLタグで開始される関数を通じて繰り返されるオブジェクトに対して実行されるfirebaseアクションは、Webサイトを停止させます。最終的に私はファイルをステージングしてメモリにロードした二段階のプロセスと、それをアップロードしてfirebaseオブジェクトを更新する第2段階の2つのプロセスを実行するだけでした。

楽しい時。

関連する問題