【发布时间】:2020-04-28 23:08:51
【问题描述】:
我有几个问题。我试图通过 http.onReuest firebase 函数使用 firebase-admin sdk 验证密钥。
所以我在这里所做的是,管理员只需在 Web 客户端上输入用户的电子邮件 ID 即可向用户发送邀请链接。因此,当管理员发送邀请时,它会将电子邮件 ID 推送到 Firebase 数据库并捕获自动生成的密钥并将密钥附加到 URL 中并将 URL 发送给用户。当用户单击电子邮件中的链接时,它会向下面的函数发出 get 请求,该函数将 url 拆分并将 id 搜索到数据库中并相应地返回响应。
但是搜索与键关联的值不起作用。我尝试了不同的代码 sn-ps 但没有工作。
A - /*邀请网址格式 - https://web-url.com/invite/[teacher-unique-id]=[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()
});
});
});
另外,我每隔 15 秒就会到达终点,有时会显示成功,但大多数时候会显示内部服务器错误或超时错误或错误:无法处理请求
编辑
{
"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",
}
}
}
}
【问题讨论】:
-
Stack Overflow 是一个非常低效的交互式调试器。此代码的哪个精确行不起作用?您可能还需要在此处向我们展示您尝试查询的 JSON(作为文本,请不要截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
-
代码很好,到目前为止没有错误,但它没有按预期工作。抱歉,我无法在此处共享 JSON,因为它存储了用户的一些敏感数据,但我可以在此处共享结构。检查 JSON 结构的编辑。
标签: node.js firebase firebase-realtime-database google-cloud-functions