javascript Firebase云函数,触发onWrite方法并在检索用户数据时遇到问题[已关闭]

e7arh2l6  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(120)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
两年前关闭了。
Improve this question
This is the cloud function that triggers when data is changed,created or deleted.在这个函数里面我已经标记了代码,在这个代码中我想检索存储在真实的数据库的另一个节点中具有相同ID的用户令牌。正如你可以在实时数据库中看到的。但是我无法从数据库中获取令牌。请帮助我解决这个问题。
This is Structure of my realtime database.我想在此云函数中从数据库获取令牌

bnl4lu3b

bnl4lu3b1#

once()方法是异步的,它返回一个Promise,但是您不必等待Promise解析就可以获取节点的值。
因为您将Cloud函数声明为异步函数,所以下面的代码应该可以实现这个目的

//...
const deviceTokenSnap = await admin.database().ref(`tokens/${userId}/token`).once('value');
const token = deviceTokenSnap.val();
//...

此外,建议避免混合使用async/await和then()
您应按如下方式调整函数的结尾:

const response = await admin.messaging().sendToDevice(...);
console.log(response);
return null;

您还应该使用try/catch块,请参见https://itnext.io/error-handling-with-async-await-in-js-26c3f20bc06a
最后,请避免添加IDE的屏幕截图,而是将代码复制/粘贴到问题中。

相关问题