使用 firebase 响应构建 json 个对象
Build json object with firebase responses
我正在为从两次 firebase 调用中收集的 return 数据构建一个 json 对象。在开发中,对象带有数据(事件)。当我构建应用程序并部署数据(事件)时 returns a null
这是我的代码:
import admin from '../../lib/firebase-admin';
const validate = async (token) => {
let events = null
let user = null
if(token){
const decodedToken = await admin.auth().verifyIdToken(token, true);
user = await admin.auth().getUser(decodedToken.uid);
}
admin.database().ref(`events`).on('value', snapshot => {
events = { ...snapshot.val() }
})
const result = {
data: {
uid: user ? user.uid : null,
email: user ? user.email : null,
emailVerified: user ? user.emailVerified : null,
events: events
},
};
return result;
};
export default async (req, res) => {
try {
const { token } = JSON.parse(req.headers.authorization || '{}');
const result = await validate(token);
return res.status(200).send(result);
} catch (err) {
console.log(err);
const result = undefined;
return res.status(200).send(result);
}
};
在这种情况下,您应该使用 once()
而不是 on()
到 query Realtime Database a single time。 on()
是异步的,用于添加持续接收数据的持久侦听器。 once()
也是异步的,但它 returns 有一个通过数据快照解析的承诺。
const snapshot = await admin.database().ref(`events`).once('value');
events = { ...snapshot.val() }
我正在为从两次 firebase 调用中收集的 return 数据构建一个 json 对象。在开发中,对象带有数据(事件)。当我构建应用程序并部署数据(事件)时 returns a null
这是我的代码:
import admin from '../../lib/firebase-admin';
const validate = async (token) => {
let events = null
let user = null
if(token){
const decodedToken = await admin.auth().verifyIdToken(token, true);
user = await admin.auth().getUser(decodedToken.uid);
}
admin.database().ref(`events`).on('value', snapshot => {
events = { ...snapshot.val() }
})
const result = {
data: {
uid: user ? user.uid : null,
email: user ? user.email : null,
emailVerified: user ? user.emailVerified : null,
events: events
},
};
return result;
};
export default async (req, res) => {
try {
const { token } = JSON.parse(req.headers.authorization || '{}');
const result = await validate(token);
return res.status(200).send(result);
} catch (err) {
console.log(err);
const result = undefined;
return res.status(200).send(result);
}
};
在这种情况下,您应该使用 once()
而不是 on()
到 query Realtime Database a single time。 on()
是异步的,用于添加持续接收数据的持久侦听器。 once()
也是异步的,但它 returns 有一个通过数据快照解析的承诺。
const snapshot = await admin.database().ref(`events`).once('value');
events = { ...snapshot.val() }