Javascript Firebase实时数据库我可以';不改变数据
这个问题刚刚开始出现。问题是当我在firebase控制台上更改数据时,它不允许我进行更改。当我试图更改应用程序上的数据时,它进入了一个完美的bug。我所更改的数据会快速自我更新并返回到其原始状态,并且这种情况会持续下去。数据库开始一直更新,我在安全规则中添加了write false,现在更新停止了 只有在更改图片中标记的节点中的数据时,才会出现此问题 用户=>UserId=>forms=>formId 编辑 这是我的云功能:Javascript Firebase实时数据库我可以';不改变数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,这个问题刚刚开始出现。问题是当我在firebase控制台上更改数据时,它不允许我进行更改。当我试图更改应用程序上的数据时,它进入了一个完美的bug。我所更改的数据会快速自我更新并返回到其原始状态,并且这种情况会持续下去。数据库开始一直更新,我在安全规则中添加了write false,现在更新停止了 只有在更改图片中标记的节点中的数据时,才会出现此问题 用户=>UserId=>forms=>formId 编辑 这是我的云功能: exports.scheduledFunction = functi
exports.scheduledFunction = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
var now = new Date
admin.database().ref("/forms").orderByKey().once("value",snap=>{snap.forEach(a=>{
var x =new Date(a.child("endDate").val()).getTime()
if(x-now<0){
admin.database().ref('/users/'+a.child("who").val()+"/forms/"+a.key).update({
update : false
})
admin.database().ref('/forms/'+a.key+"/participants/").once("value",c=>c.forEach(uid=>{
admin.database().ref('/users/'+uid.key+'/participateCamp/'+a.key).remove()
})).then(()=>admin.database().ref('/forms/'+a.key).remove())
}
}
)})
return null;
});
exports.scheduledFunction=functions.pubsub.schedule('0***').onRun((上下文)=>{
var now=新日期
admin.database().ref(“/forms”).orderByKey().once(“value”,snap=>{snap.forEach(a=>{
var x=新日期(a.child(“endDate”).val()).getTime()
if(x-nowc.forEach(uid=>{
admin.database().ref('/users/'+uid.key+'/participateCamp/'+a.key).remove()
})).then(()=>admin.database().ref('/forms/'+a.key).remove())
}
}
)})
返回null;
});
还有另一个名为表单的表:
打开表单的用户的表单同时添加到表单表和Users=>UserId=>forms=>formId中
已解决
我注意到这个问题是在我更新应用程序中的表单时开始的。更新时,我注意到valueChanges()被触发,我没有取消订阅()
所以问题是由我编写的代码引起的。可能遇到这种问题的朋友会看到它,并注意他们的valueCahnges()方法。在updateForm函数之前:
updateForm(form : FormGroup,formId){
firebase.auth().onAuthStateChanged(user=> {
if (user) {
this.db.database.ref('/users/'+user.uid).once("value",snap=>{
})
this.pp = this.db.object('/users/' + user.uid).valueChanges()
this.pp.forEach(x=>{console.log("neler oluyor")
this.db.object('/forms/' + formId).update({
place : form.value.place,
who : user.uid,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
pp : x.pp,
name : x.name,
formId : formId,
chat:{"1":{message:"Form Chat Açıldı!",name:"Sistem"}}
}).then(x=>this.db.object('/users/'+ user.uid+'/forms/'+formId).update({
place : form.value.place,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
update : true
})) })
} else {
// No user is signed in.
}
});
}
在我修复并解决问题后:
updateForm(form : FormGroup,formId){
firebase.auth().onAuthStateChanged(user=> {
if (user) {
this.db.database.ref('/users/'+user.uid).once("value",snap=>{
this.db.object('/forms/' + formId).update({
place : form.value.place,
who : user.uid,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
pp : snap.child("pp").val(),
name : snap.child("name").val(),
formId : formId,
chat:{"1":{message:"Form Chat Açıldı!",name:"Sistem"}}
}).then(x=>this.db.object('/users/'+ user.uid+'/forms/'+formId).update({
place : form.value.place,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
update : true
}))
})
} else {
}
});
}
在updateForm函数之前:
updateForm(form : FormGroup,formId){
firebase.auth().onAuthStateChanged(user=> {
if (user) {
this.db.database.ref('/users/'+user.uid).once("value",snap=>{
})
this.pp = this.db.object('/users/' + user.uid).valueChanges()
this.pp.forEach(x=>{console.log("neler oluyor")
this.db.object('/forms/' + formId).update({
place : form.value.place,
who : user.uid,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
pp : x.pp,
name : x.name,
formId : formId,
chat:{"1":{message:"Form Chat Açıldı!",name:"Sistem"}}
}).then(x=>this.db.object('/users/'+ user.uid+'/forms/'+formId).update({
place : form.value.place,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
update : true
})) })
} else {
// No user is signed in.
}
});
}
在我修复并解决问题后:
updateForm(form : FormGroup,formId){
firebase.auth().onAuthStateChanged(user=> {
if (user) {
this.db.database.ref('/users/'+user.uid).once("value",snap=>{
this.db.object('/forms/' + formId).update({
place : form.value.place,
who : user.uid,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
pp : snap.child("pp").val(),
name : snap.child("name").val(),
formId : formId,
chat:{"1":{message:"Form Chat Açıldı!",name:"Sistem"}}
}).then(x=>this.db.object('/users/'+ user.uid+'/forms/'+formId).update({
place : form.value.place,
description:form.value.description,
startDate : form.value.startDate,
endDate : form.value.endDate,
update : true
}))
})
} else {
}
});
}
如果你认为答案可能对其他用户有用,请将其作为答案发布,而不是作为问题的更新。“就目前的形式而言,我并不确信,因为我感觉我们没有看到导致问题的代码。”弗兰克凡帕夫伦(FrankvanPuffelenı)给出了答案。希望它能帮助其他人。如果你认为答案可能对其他用户有用,请将其作为答案发布,而不是作为问题的更新。“就目前的形式而言,我并不确信,因为我感觉我们没有看到导致问题的代码。”弗兰克凡帕夫伦(FrankvanPuffelenı)给出了答案。希望它能帮助别人。