Как указано в документации, я сохраняю пользователей в списке. Пользователи могут регистрироваться как с паролем, так и с провайдерами 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) в каждом пользователе => Добавление дополнительным Информация о пользователе в
- Добавить еще один список, который сохраняет которые пользователи были уведомлены => требует, чтобы петли как на полный список
Любой образованный предложение приветствуется!
Я действительно знал о пожарной базе, это кажется мощным. Вы бы рекомендовали сделать отдельную очередь для каждой темы, добавив спецификацию в задачу? – Anthony
Это действительно зависит от того, как вы предпочитаете структурировать свой внутренний код и достаточно ли разные задачи. У вас может даже быть начальная «createUser» задача, которая затем отгоняет другие «подзадачи». Но я обычно предпочитаю более простую систему. –