javascript - snapshot.val() 返回未定义,但它记录正确。Node.js 火力基地
问题描述
我不知道为什么,但是当我在 snapshot.val() 中返回对象时,它不会将任何东西返回到我的前面,但是当我 console.log() 它时,它会正确显示对象。这是我返回它的方式:
function Loggear({ email, password }) {
db.ref("Usuarios")
.orderByChild("email")
.equalTo(email)
.on("child_added", (snapshot) => {
console.log(snapshot.val())
return snapshot.val();
});
}
它如何在 console.log() 上显示我的对象:
{
ciudad: 'Buenos Aires',
codigoPostal: '1000',
direccionCalle: 'la casa de tomas',
direccionNumero: '1',
documento: '1',
email: 'firebase@pruebita.com',
fechaNacimiento: '1111-01-01',
nombreCompleto: 'firebase',
password: 'contraseña',
telefonoCelular: '1233'
}
解决方案
如果您只想获取一次数据,请使用once()而不是on(),如文档中所示。 on()
在某个数据库位置设置一个持久侦听器,并且每次在该位置发生更改时都会调用您的回调函数。那不是你想要的。而是使用once()
,它返回用数据快照解析的承诺:
function Loggear({ email, password }) {
return db.ref("Usuarios")
.orderByChild("email")
.equalTo(email)
.once("value", (snapshot) => {
console.log(snapshot.val())
return snapshot.val();
});
}
推荐阅读
- google-maps - 无论如何使用api将谷歌地方的显示数量限制为2条评论
- mysql - NIFI JDBC 连接到 MariaDB UTF8 支持
- c# - RestSharp 代理 http/https/socks 信息
- bash - 如何检查是否在bash的字符串中设置了变量?
- c++ - 无法使此代码在 MSVC 2015 和 GCC 7.3 之间交叉编译
- android - 为什么使用 Camera2 API 的图片有不同的亮度?
- regex - 匹配后如何停止grep
- javascript - 未能将回调队列转换为使用 Promise
- ruby - 无法在 OSX 10.13.6 中安装 Ruby 1.9.3
- unity3d - 相交平截头体