- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习使用 firebase,我需要一些帮助。我需要获取 Firebase 函数中特定节点的子节点数量,但我不能。
这是我的节点:
我想编写一个触发器,在 watingRoom
中创建新用户后,检查 waitingRoom 中的用户总数,并根据此数字返回不同的内容。
这是我的代码:
exports.createOtherNode = functions.database
.ref('/waitingRoom/{userID}')
.onCreate((snapshot, context) => {
const usersInWatingRoom = snapshot.ref.parent.once('value', (datasnapshot) => {
const numberOfChildren = datasnapshot.numChildren()
return numberOfChildren
});
console.log(usersInWatingRoom)
if(usersInWatingRoom > 100)
//RETURN SOMETHING
else
//RETURN SOMETHING ELSE
});
代码可以工作,但 usersInWatingRoom 返回的不是一个数字,而是一个 promise 。
(console log: Promise {
<pending>,
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
)
我期望值 2,这样我就可以处理 if
。
如何解决这个问题?您是否建议我另一种在 onCreate
触发器中获取节点子节点数量的方法?
最佳答案
对 JavaScript Promise 的理解是 essential确保云功能为您正常工作。
在这种情况下,您需要链接返回的 Promise 来完成额外的工作。
您还需要确保使用 once
的 promise 形式,以确保获得确定性结果。回调形式在云函数环境中无法正常工作,因为函数可能会在回调执行之前终止。
请注意,从后端函数返回一个值(除了返回一个 promise )没有多大意义——因为没有调用者会得到结果(当然,做一些事情,比如进一步的数据库更新,不会有道理)。
无论如何,您大致需要执行以下操作:
exports.createOtherNode = functions.database
.ref('/waitingRoom/{userID}')
.onCreate((snapshot, context) => {
return snapshot.ref.parent.once('value').then((datasnapshot) => {
const numberOfChildren = datasnapshot.numChildren()
return numberOfChildren
}).then((usersInWaitingRoom) => {
console.log(usersInWaitingRoom)
if(usersInWaitingRoom > 100)
// Do Something
else
// Do Something Else
});
});
关于javascript - 计算 Firebase Cloud Functions 中的子级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018250/
我需要对反正切值执行泰勒级数 50 次。表示 arctan Taylor 级数的域之间的 50 个数字,即 [-1,1]。我已经用手动用户输入对其进行了测试并且它工作正常,但是我在代码中递增 0.01
我在网上看了几个小时,想看看我是否能找到解决方案,虽然我已经找到了很多解决方案,但我教授的指示如下: Write a program to estimate PI (π) using the foll
我最近在编程测试中被问到这个问题。我似乎无法理解为什么我会得到答案“1”。我是 C 编程语言的初学者。 这是我的代码: #include int main() { float c = 0;
我是一名优秀的程序员,十分优秀!