ドキュメントに引用されているとおり、ユーザをリストに保存します。ユーザーは、パスワードとFacebookプロバイダの両方でログオンできます。 (他のプロバイダが後で来るかもしれません)再起動後もFirebaseリストに追加された新しいユーザを知る
次に、私は新しいリストの項目を聞いて、新しい項目の場合に私に電子メールを送るnodejsアプリを持っています。
これはfirebaseで簡単ですが、child_addedイベントリスナーを追加するだけです。しかし、私のアプリが更新/クラッシュなどの理由で再起動する可能性があるため、アプリを再起動するたびにすべてのユーザーとメールを受け取る必要はありません。だから私はちょうど電子メールを送信するために使用されている最新のuserIdを保存します。
var retrieveLatestAccountNotified = function() {
ref.child("server-state").child("email-account").once("value", function (snapshot) {
user = snapshot.val();
console.log("Latest User Id : " + user);
fetchUser(user);
//fakeUser("");
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
};
var fetchUser = function (latestUserId) {
ref.child("users").orderByKey().startAt(latestUserId).on("child_added", function (snapshot, prevChildKey) {
if (snapshot.key() !== latestUserId) {
var newUser = snapshot.val();
console.log(newUser);
sendEmail.newAccountEmail(ses, newUser, snapshot.key(), function (err, data) {
if (err)
throw err;
console.log('Email sent:');
console.log(data);
ref.child("server-state").child("email-account").set(snapshot.key());
});
}
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
};
問題は、FBが選択したプロバイダによって異なるuserIdタイプを生成するため、私の仕組みが機能しないということです。
これに対処するにはどうすればよいですか?
- ユーザーが作成されたときにすべてのユーザーに、子供(CREATION_DATE)を追加 =>は、余分な追加多くのクライアントがユーザーを追加すると、この機構は
- 各クライアントの実装で使用する必要があります =>優先順位を追加ユーザー
- ユーザーが を通知された保存し、別のリストを追加で情報=>両方の完全なリスト上のループに必要
どれでも教育を受けた命題は大歓迎です!
私はfirebase-queueについて知りましたが、それは強力なようです。すべてのトピックについて個別のキューを作成し、タスクにspecIdを追加することをお勧めしますか? – Anthony
これは実際にバックエンドコードをどのように構築するか、タスクが十分に異なるかどうかによって異なります。最初の「createUser」をタスクにして、他の「サブタスク」をファンアウトすることもできます。しかし、私は通常、よりシンプルなシステムを好みます。 –