Firebase: объединение результатов документа Firestore с JavaScript SDK - PullRequest
0 голосов
/ 11 июня 2018

Я хочу получить / прочитать два документа с Promise.all, а затем вставить несколько полей в один ответ, который я получил от другого, .then установить в окончательный документ.

Япытаясь сделать ниже, и это не ошибка / сбой, но данные не передаются.Я предполагаю, что должен «распаковать» ответы, то есть создать новый объект и добавить все свойства, а затем передать этот объект для .set?... Проблема в том, что эти ответы могут быть полными, поэтому я надеялся, что мне не придется все это обрабатывать.

var promises = [getUserInfoFromFirestore(),getOrder(order,"orders")];

Promise.all(promises).then(function (res) {
    //move some user fields to order fields
    res[1].data().soldToEmail = res[0].email;
    finalRef.set(res[1].data()).then(function() {
        deleteOrder(order).then(function() {
            toast("Order Submitted");
        });
    });            
    res[1].data().soldToFirstName = res[0].firstName;
}).catch(function (error) {
    console.log("Error fetching order:", error);
}); 

1 Ответ

0 голосов
/ 11 июня 2018

DocumentSnapshot объекты неизменны.Вам нужно будет запомнить результаты первого вызова data(), поскольку он каждый раз создает новый объект.Вместо этого измените этот объект и используйте его при вызове set().

. Кроме того, проще и проще использовать update () , если вы просто хотите изменить содержимоеотдельное поле в документе.Вам даже не нужно читать документ, который вы хотите обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...