gpt4 book ai didi

javascript - 从函数内的数据库检索数据

转载 作者:行者123 更新时间:2023-12-01 02:30:44 25 4
gpt4 key购买 nike

我需要在 Firebase 函数内调用 Firebase DB。这是我的数据库结构的样子: enter image description here

我需要通过名字获取姓氏。我尝试了很多方法,但没有一个对我有用。这是其中之一:

    var db = admin.database();
var ref = db.ref("people");
ref.equalTo("Alex").on("child_added", function(snapshot) {
console.log(snapshot.key);
});

我做错了什么?

最佳答案

您没有告诉 Firebase 按哪个字段进行排序/过滤。那么您希望什么属性与 Alex 相同?

要告诉数据库这一点,请在 equalTo(...) 之前调用 orderByChild(...):

var db = admin.database();
var ref = db.ref("people");
ref.orderByChild("FirstName").equalTo("Alex").on("child_added", function(snapshot) {
console.log(snapshot.key);
});

这将在 Web 客户端中运行,该客户端只会在页面打开时保持与 Firebase 数据库的开放连接。但在 Cloud Functions 中,您的代码将很快关闭,因此您通常需要使用 once("value",...) 进行读取:

ref.orderByChild("FirstName").equalTo("Alex").once("value", function(snapshot) {
snapshot.forEach(function(child) {
console.log(child.key);
});
});

如果您在 Cloud Functions 中运行此代码,则需要在完成时告诉 Cloud Functions。为此,您需要从代码中返回一个所谓的 Promise。一个简单的方法是:

return ref.orderByChild("FirstName").equalTo("Alex").once("value", function(snapshot) {
snapshot.forEach(function(child) {
console.log(child.key);
});
return Promise.resolve();
});

因此,一旦完成,我们就会在回调中返回一个已解决的 promise 。然后我们的外部代码将其返回到 Cloud Functions 环境,以便它知道您的代码已完成。

关于javascript - 从函数内的数据库检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48332857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com