firebase 云函数事务无法设置 属性
firebase cloud function transaction Cannot set property
我有云 Firebase 功能。我想在这里匹配用户。但是当我想更新交易中的新用户列表时。一切正常,直到我开始交易。它只是在更新过程中出现问题,我收到错误消息。我哪里错了?
function EslesmeUser(userID, gameID, users, level) {
this.userID = userID;
this.gameID = gameID;
this.users = users;
this.level = level;
}
exports.miniOyunEslemeOnline = functions.database.ref("/test/guncelle22/{player}")
.onCreate((eslesecekSnap, context) => {
return database.ref().child("test").child("guncelle22").once("value").then((players) => {
const eslesecek = new EslesmeUser(eslesecekSnap.key, eslesecekSnap.child("gameID").val(), eslesecekSnap.child("users").val(), eslesecekSnap.child("level").val());
eslesecek.users[0] = "testuser1";
database.ref().child("test").child("guncelle22").transaction(function (players) {
const NewValue = {
gameID: eslesecek.gameID,
level: eslesecek.level,
users: eslesecek.users,
};
players[eslesecek.userID] = NewValue; //---> ERROR İS HERE.
return players;
});
return null;
}).catch((error) => {
console.log(error);
});
});
错误的屏幕截图(eslesecek.userID = usersid000)
我的数据库模型
第一次 运行 时,将使用 null
调用您的事务处理程序。即使您知道数据库中存在一个值,您也需要处理这个空值,并且return数据应该 如果没有数据存在。
所以像这样:
database.ref().child("test").child("guncelle22").transaction(function (players) {
if (players !== null) {
const NewValue = {
gameID: eslesecek.gameID,
level: eslesecek.level,
users: eslesecek.users,
};
players[eslesecek.userID] = NewValue;
}
return players;
});
使用更新后的代码:
- 您的第一次回调是 运行,它也会将
null
和 return 的 null
发送到数据库。
- 然后数据库注意到数据实际上不是
null
,您的代码再次执行,但现在 players
的值是正确的。
我有云 Firebase 功能。我想在这里匹配用户。但是当我想更新交易中的新用户列表时。一切正常,直到我开始交易。它只是在更新过程中出现问题,我收到错误消息。我哪里错了?
function EslesmeUser(userID, gameID, users, level) {
this.userID = userID;
this.gameID = gameID;
this.users = users;
this.level = level;
}
exports.miniOyunEslemeOnline = functions.database.ref("/test/guncelle22/{player}")
.onCreate((eslesecekSnap, context) => {
return database.ref().child("test").child("guncelle22").once("value").then((players) => {
const eslesecek = new EslesmeUser(eslesecekSnap.key, eslesecekSnap.child("gameID").val(), eslesecekSnap.child("users").val(), eslesecekSnap.child("level").val());
eslesecek.users[0] = "testuser1";
database.ref().child("test").child("guncelle22").transaction(function (players) {
const NewValue = {
gameID: eslesecek.gameID,
level: eslesecek.level,
users: eslesecek.users,
};
players[eslesecek.userID] = NewValue; //---> ERROR İS HERE.
return players;
});
return null;
}).catch((error) => {
console.log(error);
});
});
错误的屏幕截图(eslesecek.userID = usersid000)
我的数据库模型
第一次 运行 时,将使用 null
调用您的事务处理程序。即使您知道数据库中存在一个值,您也需要处理这个空值,并且return数据应该 如果没有数据存在。
所以像这样:
database.ref().child("test").child("guncelle22").transaction(function (players) {
if (players !== null) {
const NewValue = {
gameID: eslesecek.gameID,
level: eslesecek.level,
users: eslesecek.users,
};
players[eslesecek.userID] = NewValue;
}
return players;
});
使用更新后的代码:
- 您的第一次回调是 运行,它也会将
null
和 return 的null
发送到数据库。 - 然后数据库注意到数据实际上不是
null
,您的代码再次执行,但现在players
的值是正确的。