пытается установить значение переменной карты в javascript для документа firestore в качестве поля карты с помощью облачной функции. Сбой с ошибкой - Ошибка: значение аргумента «данные» не является допустимым документом Firestore. Вход не является обычным объектом JavaScript (находится в поле. map_field: myMap вызывает проблему. Итак, как мне установить javascript map как поле карты в документе firestore?
admin.firestore().collection("users").doc("test").set({
name: "Los Angeles",
state: "CA",
map_field: myMap // map variable
})
Полный код здесь: я собираю данные из нескольких документов firestore и пытаюсь вставить в новый документ.
Код ------------------------->
exports.fxname= functions.https.onRequest((request, response) => {
collectionRef = admin.firestore().collection('user/doccx/collx');
let myMap = new Map();
collectionRef.listDocuments().then(documentRefs => {
console.log('Fetching each document:console log');
return admin.firestore().getAll(...documentRefs)
.then(documentSnapshots => {
for (let documentSnapshot of documentSnapshots) {
let name = documentSnapshot.get('aa');
let totalScore= documentSnapshot.get('bb');
myMap.set(name, totalScore.toString());
}
functions.logger.log("calculation done: ");
console.log(Array.from(myMap) ); //prints values
var keys = Object.keys(myMap);
keys.forEach(key=>{
console.log(key + '|' + myMap[key]); //this is not printing any value
});
admin.firestore().collection("users").doc("test").set({
name: "Los Angeles",
state: "CA",
country: myMap
}).then(function() {
functions.logger.info("Insert Successful !", {structuredData: true});
return;
})
.catch(function(error) {
functions.logger.error("Error writing document: ", error);
});
return;
}).catch(function(error) {
functions.logger.error("Error 1: ", error);
});
}).catch(function(error) {
functions.logger.error("Error 2: ", error);
});
response.send("Hello from Firebase Outside!");`enter code here`
});
Не имеет отношения к проблеме, но также получает предупреждение ниже. Это связано с вложением .then. какие-либо предложения по переписыванию вышеуказанного кода?
108: 34 предупреждение Избегайте вложенных обещаний обещание / отсутствие вложенности
108: 34 предупреждение Избегайте вложенных обещаний обещание / отсутствие вложенности