サーチ…


前書き

読み取りまたは書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていない(デフォルトではデータベースには認証されたユーザーのみがアクセスできるため)、またはセキュリティで保護されていない場所で書き込み/リスニングしているなどの理由で、許可を得ている。

Androidに値を書き込むときのエラーを検出する

書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていないなどの理由でセキュリティルールが操作を拒否するためです(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティルール違反は、logcatの出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

Androidで書き込みに失敗したことを検出するには、完了コールバックをsetValuesetValue

ref.setValue("My new value", new DatabaseReference.CompletionListener() {
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
        throw databaseError.toException();
    }
});

このような例外をスローすると、次回このようなエラーを見落とすことは非常に困難になります。

Androidでデータを読み取るときにエラーを検出する

あなたの読み取り操作がうまくいかない理由は、セキュリティルールが認証されていないなどの理由でセキュリティルールが操作を拒否していることが原因です(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティルール違反は、logcatの出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

失敗したAndroid上で読みを検出するには、実装する必要がありonCancelledあなたの方法ChildEventListener

databaseRef.addChildEventListener(new ChildEventListener() {
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildRemoved(DataSnapshot dataSnapshot) { ... }
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

または、 ValueEventListenerを持っているValueEventListener

databaseRef.addValueEventListener(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

このコードを使用すると、Androidでデータを読み取るときにセキュリティエラーを見落とすのはかなり難しいでしょう。

iOSに値を書き込むときのエラーを検出する

書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていないなどの理由でセキュリティルールが操作を拒否するためです(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティ規則違反は、プログラムの出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

iOSで書き込みに失敗したことを検出するには、完了ブロックをsetValueに追加します

let message = ["name": "puf", "text": "Hello from iOS"]
ref!.childByAutoId().setValue(message) { (error) in
    print("Error while writing message \(error)")
}

このような例外をスローすると、次回このようなエラーを見落とすことは非常に困難になります。

JavaScriptでデータを読み取る際のエラーの検出

あなたの読み取り操作がうまくいかない理由は、セキュリティルールが認証されていないなどの理由でセキュリティルールが操作を拒否していることが原因です(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティルール違反は、ブラウザのJavaScriptコンソールで確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

JavaScriptで読み込みに失敗したことを検出するには、 on()on() 2番目のコールバックを追加する必要があります。

ref.on('value', function(snapshot) {
    console.log(snapshot.key, snapshot.val());
}, function(error) {
    alert(error);
})

このコードを使用すると、JavaScriptでデータを読み取るときにセキュリティエラーを見落とすのがかなり難しくなります。

JavaScriptで値を書き込むときのエラーの検出

書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていないなどの理由でセキュリティルールが操作を拒否するためです(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティルール違反はコンソール出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

JavaScriptの書き込みに失敗したことを検出するには、完了コールバックをset次のようにsetます。

ref.set("My new value").catch(function(error)
    console.error(error);
    alert(error);
});

このようなアラートを表示すると、次回このようなエラーを見落とすことは非常に困難になります。

iOSでデータを読み取るときにエラーを検出する

あなたの読み取り操作がうまくいかない理由は、セキュリティルールが認証されていないなどの理由でセキュリティルールが操作を拒否していることが原因です(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。

これらのセキュリティルール違反はコンソール出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。

iOSで読み込みに失敗したことを検出するには、オブザーバーのwithCancelブロックを実装する必要があります。

    ref!.child("notAllowed").observe(.value, with: { (snapshot) in
        print("Got non-existing value: \(snapshot.key)")
    }, withCancel: { (error) in
        print(error)
    })


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow