Ошибка: аргумент «documentRef» не является допустимой DocumentReference. Не удалось сериализовать объект типа «CollectionReference». FireStore - PullRequest
0 голосов
/ 02 сентября 2018

Для обновления документа я делаю следующее:

1) Я собираю первую часть данных из документа в коллекцию под названием "Loc"

2) Я использую часть данных из 1), чтобы получить документ в коллекции под названием "userInfo"

3) Я использую результаты 1) и 2) для обновления второго документа

Я использовал Транзакция , потому что мне нужны эти 3 действия для одновременного запуска в соответствии с документацией , это возможно.

return new Promise((res, rej) => {
            var LocRef = db.collection("Loc").doc(newLocale);

            db.runTransaction(function (transaction) {
                return transaction.get(LocRef).then(function (doc) {
                    if (!doc.exists) {
                        throw "Document does not exist!";
                    }
                    var userInfoDocRef = userInfoRef.doc(user_id)
                    transaction.get(userInfoDocRef).then(function (userDoc) {
                        if (!userDoc.exists) {
                            throw "Document does not exist!";
                        }
                        var userInfoUpdate = {
                            "preferred_locale": newLocale,
                            "preferred_pair": userDoc.data().preferred_crypto_currency + doc.data().CurrencyCode,
                            "preferred_fiat_currency": doc.data().CurrencyCode
                        }
                        transaction.update(userInfoRef, userInfoUpdate);
                        var ans = {"success": true}
                        return ans
                    }).catch((e)=>{
                        console.log(e)
                    });
                }).then(function (ans) {
                    res(ans)
                }).catch(function (err) {
                    // This will be an "population is too big" error.
                    console.error(err);
                    rej(err)
                });
            })
        })

Однако я получаю следующую ошибку:

Ошибка: аргумент «documentRef» не является допустимой DocumentReference. Не удалось сериализовать объект типа «CollectionReference». Firestore не поддерживает объекты JavaScript с пользовательскими прототипами (т.е. объекты, созданные с помощью оператора «new»).

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