Javascript FIrebase云函数:一次更新多个记录时出错
我要做的是:每当向实时数据库中的特定节点添加新值时,我要尝试使用云函数更新一个单独的节点 更新实时数据库的代码:(有时我一次更新多个节点)使用{'uid/managedby':'newid'}符号Javascript FIrebase云函数:一次更新多个记录时出错,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我要做的是:每当向实时数据库中的特定节点添加新值时,我要尝试使用云函数更新一个单独的节点 更新实时数据库的代码:(有时我一次更新多个节点)使用{'uid/managedby':'newid'}符号 modifyManagerBeforeDelete(newManagedBy, oldManagedBy) { let updateVal = {}; let ref = this.afDB.database.ref('users').orderByChild('managedby
modifyManagerBeforeDelete(newManagedBy, oldManagedBy) {
let updateVal = {};
let ref = this.afDB.database.ref('users').orderByChild('managedby').equalTo(oldManagedBy);
ref.on('value', (snapshot) => {
if (snapshot.exists()) {
let keys = Object.keys(snapshot.val());
for (let uid of keys) {
updateVal[uid + '/managedby'] = newManagedBy;
}
this.afDB.object('users').update(updateVal)
.then(() => console.log("done"))
.catch((error) => console.log(error));
}
});
}
云功能:
exports.updatemanagedby = functions.database.ref('/users/{uid}/managedby').onUpdate(event => {
if (event.data.previous.exists()) {
var earlierHandler = event.data.previous.val();
console.log("earlierHandler ", earlierHandler)
var sourceId = event.params.uid;
console.log("Current UID ", sourceId)
console.log('/managedby/' + earlierHandler + '/' + sourceId);
admin.database().ref('/managedby/' + earlierHandler + '/' + sourceId).once('value', function (snapshot) {
snapshot.ref.remove()
})
}
var newEmployee={}
newEmployee[event.params.uid] = true;
admin.database().ref('/managedby/' + event.data.val()).update(newEmployee)
.then(()=>console.log("Update Successful"))
.error((error)=>console.log(error));
})
错误:
实时数据库已更新,没有错误。但是,使用云函数时,我会遇到两种错误:
a) 当我更新实时数据库中的一个或两个记录,然后启动云函数onupdate时,我得到:
TypeError:admin.database(…)ref(…).update(…)。然后(…)。错误为
不是功能
但是,云功能起作用,记录也会更新
b) 当我更新实时数据库中的多个节点时,我得到:
一个无限循环,云功能不断运行,应用程序崩溃。云功能不会根据需要进行所有更新。我如何纠正这一点