У меня есть код ниже, и хотя console.log всегда печатает правильный logText, logText не всегда записывается в Cloud Firestore. Для тестового режима я запускаю руководство по функциям каждые 3-4 се c и не работает. В режиме выпуска функция будет работать еще быстрее ....
// Update History Log
function updateHistoryLog(logText) {
var game = getgameCookies();
var db = firebase.firestore();
var cards = game.substring(0, game.length - 9) + 'cards'
console.log(logText)
var logStatus = db.collection(cards).doc('changes');
logStatus.update({
logline: firebase.firestore.FieldValue.arrayUnion(logText)
});
}
// Print Historylog in screen
function historyLog() {
var player = getplayerCookies();
var game = getgameCookies();
var db = firebase.firestore();
var cards = game.substring(0, game.length - 9) + 'cards'
var logStatus = db.collection(cards).doc('changes');
var thisChange
var toWrite = document.getElementById('historyLog')
logStatus.onSnapshot(function aChange(doc) {
toWrite.innerHTML = ""
logStatus.get().then((snapshot) => {
if (doc.exists) {
thisChange = doc.data().logline
}
}).then(function() {
thisChange.reverse();
let i
for (i = 0; i < thisChange.length; i++) {
let text = thisChange[i]
toWrite.innerHTML += '<p>' + text + '</p>'
}
})
})
}
Я думаю, проблема в том, что первый скрипт пытается «вставить» новый массив, второй получает «второй» "предыдущий массив (который больше). Любая помощь будет оценена! Спасибо