Javascript 用云函数实现数据库数据

Javascript 用云函数实现数据库数据,javascript,android,database,typescript,function,Javascript,Android,Database,Typescript,Function,我正在开发一个Android应用程序,我有一个问题无法解决,尽管我阅读了Inernet上的教程 在我的应用程序中,用户有一个生命条(100点),我希望生命条每60秒(例如)减少一个特定值(即使用户注销)。 数据在Firebase数据库中注册: { "actualize": { "state" : true, "time" : 60000 }, "users": { "-M-gSECRUGQMUrBbJ8wF"

我正在开发一个Android应用程序,我有一个问题无法解决,尽管我阅读了Inernet上的教程

在我的应用程序中,用户有一个生命条(100点),我希望生命条每60秒(例如)减少一个特定值(即使用户注销)。 数据在Firebase数据库中注册:

{
    "actualize": {
        "state" : true,
        "time" : 60000
            },
    "users": {
        "-M-gSECRUGQMUrBbJ8wF": {
            "healthBar": 100,
            "substractionPoint" : 1
            },
        "-M-gSEijB-lClfuKkMUh": {
            "healthBar": 75,
            "substractionPoint" : 1.5
            }
        }
}
所以我想使用Firebase的函数云部分,但我无法生成适合我的TypeScript代码。这是我想要的图表:

//Data recovery from the database
actualiseState -> boolean
actualizeTime -> number

<idUser>/healthBar -> number
<idUser>/substractionPoint -> number

//A trigger ?
do {
<idUser>/healthBar = (<idUser>/healthBar) - <idUser>/substractionPoint

update value in database

sleep(actualizeTime)
}

while (state = true)
//从数据库中恢复数据
状态->布尔值
时间->数字
/健康栏->数字
/减法点->数字
//扳机?
做{
/healthBar=(/healthBar)-/substrationpoint
更新数据库中的值
睡眠(实时)
}
while(state=true)

提前感谢您的帮助;)/由Google Translate翻译

我构建了这段代码,但它不符合我的期望:

import * as functions from 'firebase-functions';

let actualiseState: boolean
let actualizeTime: number

export const vvalueActualize = functions.database
.ref('/actualize')
.onUpdate(async(change, context) => {

let afterData = change.after.val()

actualiseState = afterData.state
actualizeTime = afterData.time
})


export const onMessageUpdate = functions.database
.ref('/users/{userId}')
.onUpdate(async(change, context) => {

    if (actualiseState){

        await sleep(actualizeTime)

const afterData = change.after.val()

const healtBar = afterData.healtBar
const substractionPoint = afterData.substractionPoint

const newValueData = healtBar - substractionPoint

if (newValueData <= 0){
    return change.after.ref.update({valeur: 0})
}
else {
    return change.after.ref.update({valeur: newValueData})
}

}

})


function sleep(ms: number) {
    return new Promise(resolve => setTimeout(resolve, ms));
    }
import*作为“firebase函数”中的函数;
让实现状态:布尔值
让我们看看时间:号码
export const vvalueImplementation=functions.database
.ref(“/implementize”)
.onUpdate(异步(更改、上下文)=>{
让afterData=change.after.val()
实施状态=afterData.state
实施时间=afterData.time
})
export const onMessageUpdate=functions.database
.ref('/users/{userId}'))
.onUpdate(异步(更改、上下文)=>{
如果(执行状态){
等待睡眠(实时)
const afterData=change.after.val()
常量healtBar=afterData.healtBar
const substrationpoint=afterData.substrationpoint
const newValueData=healtBar-减法点
if(newValueData setTimeout(resolve,ms));
}

这看起来不像是TypeScript代码。您正在编写一些示例吗?如果您节省了时间如何?然后您可以计算生命条点