В настоящее время я работаю над приложением для платья, и я столкнулся с проблемой, которая стоила мне дней, множественного кофе и царапин на голове!
По сути, я пытаюсь вернуть массив всехданные профиля владельцев платья.
Итак, получается:
getDressData () => {
- Хранить детали платья
- Хранить платье владельца
},
getOwnerData () => {
- просмотр всех владельцев платья
- получение данных их профиля
},
resol () => {
- возврат платья ифильтровать данные
- возвращать данные профиля владельца платья
}
Вот код:
return new Promise((resolve, reject) => {
var db = firebase.firestore();
var dresses = [];
var filters = [];
var dressOwners = [];
var ownerData = [];
var dressCollection = db.collection('dresses');
var ownerCollection = db.collection('account');
var dressesRef = dressCollection.orderBy("date", "desc");
dressesRef.get()
.then(function(doc) {
if (!doc.empty) {
doc.docs.forEach(function(doc) {
if (doc.exists) {
var item = doc.data();
dresses.push({
'dressId' : doc.id,
'colour' : item.colour,
'credit' : item.credit,
'date' : item.date,
'description' : item.description,
'images' : item.images,
'owner' : item.owner,
'size' : item.size
});
if(filters.filter(x => x.size == item.size).length == 0) {
filters.push({"size" : item.size, "colours": [item.colour]});
}
else {
var index = filters.findIndex((x => x.size == item.size));
if (!filters[index].colours.filter(x => x.colours == item.colour).length > 0) {
filters[index].colours.push(item.colour);
}
}
if (dressOwners.indexOf(item.owner) === -1) {
dressOwners.push(item.owner);
}
}
});
}
})
.then(function(){
for (let i = 0; i < dressOwners.length; i++) {
ownerCollection.doc(dressOwners[i]).get()
.then(function(doc){
if (doc.exists) {
item = doc.data();
ownerData.push({
'uid' : doc.id,
'displayName' : item.displayName,
'feedback_neg' : item.feedback_neg,
'feedback_pos' : item.feedback_pos,
'registerDate' : item.registerDate,
'address' : item.address,
'email' : item.email
});
}
});
}
})
.then(function(){
resolve({
"dresses" : dresses,
"ownerData" : ownerData,
"filters" : filters
});
});
});
Вот что он возвращает:
Что возвращает Обещание
Как видно из изображенияоба массива возвращают правильные данные. Однако, если вы посмотрите на первый массив, он отображает '[]', а второй '(4) [{…}, {…}, {…}, {…}]'.
I 'Я пытаюсь получить первый массив для возврата, как второй массив.
Проблема в том, что я не могу получить данные из первого массива. Массив платьев (2-й) Я могу получить платье [я]. Цвет и т. Д.
Что я делаю не так? Это способ разрешения массивов или проблема со структурой кода .then ()?