Javascript 什么';在Firebase/Cloud功能中检查一百万代码列表的最佳方法是什么?
我正在使用Firebase的云函数来测试Firebase实时数据库中存储的一百万个预生成代码的良好价值。 它将用于移动应用程序中,以验证用户是否在现实生活中购买了捆绑包 我找到了两种可行的解决方案。首先,我将代码直接放在属性的名称中。在第二个示例中,我将代码放入名为“key”的子属性中 在第二种情况下,索引键参数 我需要快速(logn复杂度)访问才能获得响应 你知道我的任何解决方案是否能在Firebase上每秒处理大约100万条条目和100个呼叫 (我不熟悉NoSQL。) 在我的示例中,代码是“ABCD-0000-000X” (不要考虑称为“用户”的属性) 第一种解决方案:将代码值用作父项 云函数源代码Javascript 什么';在Firebase/Cloud功能中检查一百万代码列表的最佳方法是什么?,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在使用Firebase的云函数来测试Firebase实时数据库中存储的一百万个预生成代码的良好价值。 它将用于移动应用程序中,以验证用户是否在现实生活中购买了捆绑包 我找到了两种可行的解决方案。首先,我将代码直接放在属性的名称中。在第二个示例中,我将代码放入名为“key”的子属性中 在第二种情况下,索引键参数 我需要快速(logn复杂度)访问才能获得响应 你知道我的任何解决方案是否能在Firebase上每秒处理大约100万条条目和100个呼叫 (我不熟悉NoSQL。) 在我的示例中,代码是“
exports.checkKey = functions.https.onRequest((req, res) => {
const code = req.query.code;
return admin.database().ref("Codes/" + code).once("value").then(snapshot => {
if (snapshot.val() === null) {
return res.send("Invalid Code");
}
const nb = snapshot.child("nb");
if (nb.val() > 4) {
return res.send("NO more code");
}
snapshot.ref.update({ "nb": nb.val() + 1 });
return res.send("OK");
});
第二种解决方案:在child中使用代码
谢谢您的帮助。您无法查询包含一百万项的列表。因此,将密钥存储为名为
key
的属性是行不通的
但是,如果将这些键保留为每个项的键,则意味着您可以通过其路径访问该项。这个比例真的很好
所以我同意你的第一种方法
这就是说:在不了解所有用例的情况下,很难推荐任何特定的东西,因为没有人(通常包括早期阶段的项目创建者)可能知道这些用例。因此,我还建议您通过阅读、观看以及在提交任何特定方法之前尝试各种方法,来学习更多关于NoSQL数据建模的知识。请在尝试提出更多问题之前阅读。“您能帮助我了解这两种情况下会发生什么”您不明白什么?“对于100万条参赛作品和每秒100个电话来说,什么是最好的解决方案?”征求意见的问题被认为是离题的。我编辑了我的问题。我有两个解决方案,我只是想帮我找到解决问题的好方法。这对我很重要。
exports.getKey = functions.https.onRequest((req, res) => {
const code = req.query.code;
var ref = admin.database().ref("Codes");
ref.orderByChild("key").equalTo(code).on("child_added", function (snapshot) {
const nb = snapshot.child("nb");
if (nb.val() > 4) {
return res.send("NOK");
}
snapshot.child("nb").set(nb.val() + 1);
return res.send("OK");
}
});