Во втором примере вы никогда не возвращаете "char" в блоке .then()
. return char;
внутри вашего цикла возвращает значение для функции, которую вы передали forEach, а не блок then. На самом деле весь ваш цикл forEach вообще ничего не делает.
.then(snapshot => {
if (snapshot.empty) {
console.log("No matching documents.");
return promise.reject(err); // <-- Return error
}
snapshot.forEach(doc => {
console.log(doc.id, "=>", doc.data());
char.id = doc.id;
char.name = doc.data().name;
char.type = doc.data().type;
return char; // <--- This return is for the forEach function
});
return char; // <----- Added return here
})
Я не думаю, что этот код будет делать то, что вы хотите, хотя. Это вернет последнее значение char из цикла.
Если вы намеревались изменить значения внутри снимка, вы должны использовать map
вместо forEach
.
.then(snapshot => {
if (snapshot.empty) {
console.log("No matching documents.");
return promise.reject(err); // <-- Return error
}
// Convert array of docs to array of Characters
snapshot = snapshot.map(doc => {
console.log(doc.id, "=>", doc.data());
let c = new Character();
c.name = doc.data().name;
c.type = doc.data().type;
return c;
});
return snapshot; // <---- return converted array
})