Я новичок в облачных функциях Firestore и пытаюсь запустить простую функцию, которая запускает onWrite () в одной коллекции и, основываясь на этом, обновляет значение в другой.
Я сталкиваюсь с препятствиями, где значениепеременная (фактически константный массив), не распознается внутри метода ... get (). then (snapshot) => {}. Как я понимаю, область видимости внешней переменной тоже должна быть внутри, не так ли? Что я делаю не так?
Исследования по этой теме привели меня к концепции Обещаний, и я попытался создать значения обещаний на основе get () и вернуть их, но также не смог сработать. Возможно, я использовал их неправильно, если это ответ, пожалуйста, поделитесь. Спасибо.
ОБНОВЛЕНИЕ: Я проверил, сохранив значение массива в переменной вне функции .then (), и попробовал еще раз, и он работает правильно. Кажется, проблема возникает с const myArray [].
Мой код ниже:
exports.mytestExport = functions.firestore
.document('col/{docid}')
.onWrite( (change, context) => {
const docID = context.params.docid;
const myArray = change.after.data().someArray;
const db = admin.firestore();
const newColRef = db.collection("newCollection");
for(index = 0; index < myArray.length; index++) {
console.log(myArray[index]); //Value Prints here as expected.
var myArrayValue = myArray[index];
console.log(typeof(myArray[index])); // Output is 'string'
let snapshot = newColRef.doc(myArray[index]).get()
.then((snapshot) => {
console.log(myArray[index]); // This prints **'undefined'** for all the times 'for' loop is executed.
console.log(myArrayValue); // This prints Correctly!
if(snapshot.exists) {
//my code to update 'newCollection'
}
})
}
return 'success';
})
Ваша помощь очень ценится! Спасибо,