firebase
データベースにアクセスする際にエラーを聞くにはどうすればよいですか?
サーチ…
前書き
読み取りまたは書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていない(デフォルトではデータベースには認証されたユーザーのみがアクセスできるため)、またはセキュリティで保護されていない場所で書き込み/リスニングしているなどの理由で、許可を得ている。
Androidに値を書き込むときのエラーを検出する
書き込み操作が失敗する理由はたくさんあります。頻繁に行われるのは、認証されていないなどの理由でセキュリティルールが操作を拒否するためです(デフォルトでは、認証されたユーザーのみデータベースにアクセスできます)。
これらのセキュリティルール違反は、logcatの出力で確認できます。しかし、これらを見落とすのは簡単です。また、独自のコードでそれらを処理して目立つように表示することもできます。これは開発時に特に便利です(JSON、ルール、コードの変更が頻繁に行われるため)。
Androidで書き込みに失敗したことを検出するには、完了コールバックをsetValue
しsetValue
。
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)
})