У меня есть несколько проблем. Я пытался проверить ключ, используя Firebase-Admin SDK через функции http.onReuest Firebase.
Итак, что я здесь делаю, - администратор может отправить ссылку приглашения пользователю, просто введя его электронный идентификатор в веб-клиенте. Поэтому, когда администратор отправляет приглашение, он помещает идентификатор электронной почты в базу данных Firebase, захватывает автоматически сгенерированный ключ, прикрепляет ключ к URL-адресу и отправляет URL-адрес пользователю. Когда пользователь щелкает ссылку в электронном письме, он отправляет запрос на получение функции ниже, которая разбивает URL-адрес, ищет идентификатор в базе данных и возвращает ответ соответствующим образом.
Но поиск значения, связанного с ключом, не работает. Я пробовал разные фрагменты кода, но ни один не работает.
A - / * Формат приглашения URL - https://web-url.com/invite/ [ идентификатор уникального учителя ] = [ auto-gen -key-id ] * /
app.get('/invite/:token', (req, res) => {
var result = req.params.token.split("=");
const ref = database.ref('/teachers/' + result[0] + '/invited/');
ref.once('value', (snap) => {
snap.forEach((data) => {
if (data.key === result[1]) res.send(data.val());
else res.send("No user found... :(");
});
});
});
exports.fakeApp = functions.https.onRequest(app);
B -
// verify invite link and add to database
app.get('/invite/:token', (req, res) => {
var result = req.params.token.split("=");
const ref = database.ref('/teachers/' + result[0] + '/invited/');
ref.orderByKey().equalTo(result[1]).on("child_added" /* also tried "value" */, (snap)=>{
res.send({
status:"sucess",
value: snap.val()
});
});
});
Кроме того, я продолжаю ударять по конечной точке каждые 15se c, иногда он показывает успех, но большую часть времени показывает внутреннюю ошибку сервера или ошибку тайм-аута или ошибку: не удалось обработать запрос
EDIT
{
"teachers":
{
"teacher-unique-id":
{
"invited":
{
"auto-gen-key-id": "student-email-id-1",
"auto-gen-key-id": "student-email-id-2",
"auto-gen-key-id": "student-email-id-3",
"auto-gen-key-id": "student-email-id-4",
"auto-gen-key-id": "student-email-id-5",
},
"accepted":
{
"auto-gen-key-id": "unique-student-id-1",
"auto-gen-key-id": "unique-student-id-2",
"auto-gen-key-id": "unique-student-id-3",
}
}
},
"students":
{
"unique-student-id-1":
{
"session-id-1":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
},
"session-id-2":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
}
},
"unique-student-id-2":
{
"session-id-1":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
},
"session-id-2":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
}
}
}
}