Javascript 用云函数实现数据库数据
我正在开发一个Android应用程序,我有一个问题无法解决,尽管我阅读了Inernet上的教程 在我的应用程序中,用户有一个生命条(100点),我希望生命条每60秒(例如)减少一个特定值(即使用户注销)。 数据在Firebase数据库中注册:Javascript 用云函数实现数据库数据,javascript,android,database,typescript,function,Javascript,Android,Database,Typescript,Function,我正在开发一个Android应用程序,我有一个问题无法解决,尽管我阅读了Inernet上的教程 在我的应用程序中,用户有一个生命条(100点),我希望生命条每60秒(例如)减少一个特定值(即使用户注销)。 数据在Firebase数据库中注册: { "actualize": { "state" : true, "time" : 60000 }, "users": { "-M-gSECRUGQMUrBbJ8wF"
{
"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代码。您正在编写一些示例吗?如果您节省了时间如何?然后您可以计算生命条点