То, что я пытаюсь выполнить sh - нажатием кнопки <script>
выполнит 2 действия с документом. первое действие обновит старый document
в этом случае document
с именем 30 ноября 2019 года и изменит одно из его полей с именем isActive
на false
. Второе Действие установит новое document
с именем на любую текущую дату, когда пользователь выполнит указанное действие.
На данный момент ни одно из указанных действий не работает. Но второе действие работает до добавления этого кода (это должен быть первый код действия, который обновляет поле старого документа) :
let userRef1 = firebase.firestore().collection("users").doc(userId).collection("goal").orderBy("dateAdded", "desc").limit(1);
return userRef1.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
this.getDateBeforeUpdate = doc.id; //this get the document ID or the date in this case (Nov 30, 2019)
});
})
await firebase.firestore().collection("users").doc(userId).collection("goal").doc(getDateBeforeUpdate).update({
'isActive': false,
});
Вот полный код, который выполняет оба действия:
let userRef1 = firebase.firestore().collection("users").doc(userId).collection("goal").orderBy("dateAdded", "desc").limit(1);
return userRef1.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
this.getDateBeforeUpdate = doc.id; //this get the document ID or the date in this case (Nov 30, 2019)
});
})
await firebase.firestore().collection("users").doc(userId).collection("goal").doc(getDateBeforeUpdate).update({
'isActive': false,
});
if( getDateAndConsent.getGoalDate.getTime() >= date1.addDays().getTime() ){
if(getDateAndConsent.getYN == "Yes"){
await firebase.firestore().collection("users").doc(userId).collection("goal").doc(americanDate).set({
'startRange': startRange, 'endRange': endRange, 'dateAdded': data.dateAdded,
'isActive': data.isActive, 'doesmaintainBG': data.doesMaintainBG, 'goalDate': firebase.firestore.Timestamp.fromDate(data.goalDate),
'goalWeight': data.inputWeight, 'goalForWeight': data.goalForWeight,
})
.then(function(){
window.alert("Weight goal updated!");
window.location.href = "diabetesManagement.php";
})
.catch(function(error){
console.log("Error updating weight goal: ", error);
window.alert("Error updating weight goal: " + error);
})
}
else if(getDateAndConsent.getYN == "No"){
await firebase.firestore().collection("users").doc(userId).collection("goal").doc(americanDate).set({
'dateAdded': data.dateAdded, 'isActive': data.isActive,
'doesmaintainBG': data.doesMaintainBG, 'goalDate': firebase.firestore.Timestamp.fromDate(data.goalDate),
'goalWeight': data.inputWeight, 'goalForWeight': data.goalForWeight,
})
.then(function(){
window.alert("Weight goal updated!");
window.location.href = "diabetesManagement.php";
})
.catch(function(error){
console.log("Error updating weight goal: ", error);
window.alert("Error updating weight goal: " + error);
});
}
else{
window.alert("error");
}
}
else{
window.alert("error date: you can only input dates three weeks from now");
window.location.href = "diabetesManagement.php";
}
Изображение базы данных: Когда все действие будет выполнено, окруженная база данных будет обновлена. Затем будет создан новый документ с именем / id текущей даты.