firebase 云函数 ServerValue 增量不起作用
firebase cloud function ServerValue increment not working
我有一个 firebase 功能。我想在这里增加 ServerValue。但它不起作用,它会出错。我哪里做错了?
我在下面附上了控制台屏幕截图。 (注意:我不太了解java脚本,java代码也可能有错误。)
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const database = admin.database();
async function sirala(dil, lig, oyunTipi) {
await database.ref("/turnuvalar/" + dil + "/" + lig + "/" + oyunTipi + "/users/").once("value").then(async function(snap) {
const users = [];
const updatesLig = {};
const refLig = database.ref().child("ligler").child(dil).child(lig).child("users");
snap.forEach((childSnap) => {
const id = childSnap.key;
const puan = childSnap.child("puan").val();
const serverTime = childSnap.child("serverTime").val();
users.push(new Person(id, puan, serverTime));
});
users.sort((a, b) => parseFloat(a.serverTime) - parseFloat(b.serverTime));
for (let i = 0; i < users.length; i++) {
let group = [];
const grupSayi = 3;
if (i < grupSayi) {
group = users.slice(0, grupSayi);
} else {
group = users.slice(i + 1 - grupSayi, i + 1);
}
group.sort((a, b) => parseFloat(b.puan) - parseFloat(a.puan));
const index = (element) => element.id === users[i].id;
const sira = (group.findIndex(index) + 1);
// const increment = database.ServerValue.increment(kupaAdet(sira));
const kupa = {
puan: database.ServerValue.increment(1), /// ??? ERROR IS THERE ???
};
updatesLig[users[i].id + "/"] = kupa;
console.log("user id " + users[i].id + " kupa - " + kupaAdet(sira) + " sira - " + sira);
for (let g = 0; g < group.length; g++) {
console.log("grup : " + (i + 1) + " - " + group[g].id + " - " + group[g].puan + " - " + group[g].serverTime);
}
}
await refLig.update(updatesLig);
return null;
}).catch((error) => {
console.log(error);
});
}
错误截图:
看起来您的 database
是 firebase.database()
的一个实例(请注意其中的括号)。 ServerValue
属性 是在 firebase.database
上定义的,没有括号,所以这解释了为什么找不到 increment
。
您需要使用 admin.database.ServerValue.increment(1)
或 firebase.database.ServerValue.increment(1)
,具体取决于您导入 Admin SDK 的方式。
我有一个 firebase 功能。我想在这里增加 ServerValue。但它不起作用,它会出错。我哪里做错了? 我在下面附上了控制台屏幕截图。 (注意:我不太了解java脚本,java代码也可能有错误。)
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const database = admin.database();
async function sirala(dil, lig, oyunTipi) {
await database.ref("/turnuvalar/" + dil + "/" + lig + "/" + oyunTipi + "/users/").once("value").then(async function(snap) {
const users = [];
const updatesLig = {};
const refLig = database.ref().child("ligler").child(dil).child(lig).child("users");
snap.forEach((childSnap) => {
const id = childSnap.key;
const puan = childSnap.child("puan").val();
const serverTime = childSnap.child("serverTime").val();
users.push(new Person(id, puan, serverTime));
});
users.sort((a, b) => parseFloat(a.serverTime) - parseFloat(b.serverTime));
for (let i = 0; i < users.length; i++) {
let group = [];
const grupSayi = 3;
if (i < grupSayi) {
group = users.slice(0, grupSayi);
} else {
group = users.slice(i + 1 - grupSayi, i + 1);
}
group.sort((a, b) => parseFloat(b.puan) - parseFloat(a.puan));
const index = (element) => element.id === users[i].id;
const sira = (group.findIndex(index) + 1);
// const increment = database.ServerValue.increment(kupaAdet(sira));
const kupa = {
puan: database.ServerValue.increment(1), /// ??? ERROR IS THERE ???
};
updatesLig[users[i].id + "/"] = kupa;
console.log("user id " + users[i].id + " kupa - " + kupaAdet(sira) + " sira - " + sira);
for (let g = 0; g < group.length; g++) {
console.log("grup : " + (i + 1) + " - " + group[g].id + " - " + group[g].puan + " - " + group[g].serverTime);
}
}
await refLig.update(updatesLig);
return null;
}).catch((error) => {
console.log(error);
});
}
错误截图:
看起来您的 database
是 firebase.database()
的一个实例(请注意其中的括号)。 ServerValue
属性 是在 firebase.database
上定义的,没有括号,所以这解释了为什么找不到 increment
。
您需要使用 admin.database.ServerValue.increment(1)
或 firebase.database.ServerValue.increment(1)
,具体取决于您导入 Admin SDK 的方式。