Firebase / Firestore: документ не существует, но должен - PullRequest
0 голосов
/ 07 февраля 2019

Для вывода на консоль из вызова firestore я получаю No such document!, хотя там есть документ (я вижу его в консоли Firebase).Вот несколько скриншотов, показывающих мою базу данных firestore:

enter image description here enter image description here enter image description here

Вот мой код:

    var db = firebase.firestore();

    // Disable deprecated features
    db.settings({
      timestampsInSnapshots: true
    });

    console.log("app.selectedPoolId:", app.selectedPoolId);

    db.collection("pools").doc(app.selectedPoolId).collection("items").doc("items_array").get()
        .then(function(doc) {
            if (doc.exists) {
                ...
            } else {
                // doc.data() will be undefined in this case
                console.log("No such document!");
            }
        })
        .catch(function(error) {
            console.error("Error writing document: ", error);
        });

ВЫХОД КОНСОЛИ

app.selectedPoolId: Eamon's pool

Это происходит, когда я пытаюсь запустить свое гибридное приложение ios/phonegap из XCode наустройство.Чего мне не хватает?

ОБНОВЛЕНИЕ

Я вывожу ключи и значения doc объекта, только если кто-нибудь заметит что-то странное.

Этот код:

for (var prop in doc) {
     console.log("doc key:", prop);
     console.log("doc value:", doc[prop]);
}

Производит этот вывод:

2019-02-07 16:05:21.306952-0500 HybridPool[5063:1305478] app.selectedPoolId: Eamon's pool
2019-02-07 16:05:21.524750-0500 HybridPool[5063:1305478] doc key: _firestore
2019-02-07 16:05:21.524868-0500 HybridPool[5063:1305478] doc value: [object Object]
2019-02-07 16:05:21.524987-0500 HybridPool[5063:1305478] doc key: _key
2019-02-07 16:05:21.525044-0500 HybridPool[5063:1305478] doc value: pools/Eamon's pool/items/items_array
2019-02-07 16:05:21.525095-0500 HybridPool[5063:1305478] doc key: _document
2019-02-07 16:05:21.525133-0500 HybridPool[5063:1305478] doc value:
2019-02-07 16:05:21.525171-0500 HybridPool[5063:1305478] doc key: _fromCache
2019-02-07 16:05:21.525208-0500 HybridPool[5063:1305478] doc value: false
2019-02-07 16:05:21.525274-0500 HybridPool[5063:1305478] doc key: _hasPendingWrites
2019-02-07 16:05:21.525388-0500 HybridPool[5063:1305478] doc value: false
2019-02-07 16:05:21.525435-0500 HybridPool[5063:1305478] doc key: data
2019-02-07 16:05:21.525512-0500 HybridPool[5063:1305478] doc value: function (t){return mr("DocumentSnapshot.data",arguments,0,1),t=lc("DocumentSnapshot.data",t),this._document?this.convertObject(this._document.data,ri.fromSnapshotOptions(t,this._firestore._areTimestampsInSnapshotsEnabled())):void 0}
2019-02-07 16:05:21.525561-0500 HybridPool[5063:1305478] doc key: get
2019-02-07 16:05:21.525624-0500 HybridPool[5063:1305478] doc value: function (t,e){if(mr("DocumentSnapshot.get",arguments,1,2),e=lc("DocumentSnapshot.get",e),this._document){var n=this._document.data.field(ju("DocumentSnapshot.get",t));if(void 0!==n)return this.convertValue(n,ri.fromSnapshotOptions(e,this._firestore._areTimestampsInSnapshotsEnabled()))}}
2019-02-07 16:05:21.525672-0500 HybridPool[5063:1305478] doc key: id
2019-02-07 16:05:21.525711-0500 HybridPool[5063:1305478] doc value: items_array
2019-02-07 16:05:21.525749-0500 HybridPool[5063:1305478] doc key: ref
2019-02-07 16:05:21.525818-0500 HybridPool[5063:1305478] doc value: [object Object]
2019-02-07 16:05:21.525857-0500 HybridPool[5063:1305478] doc key: exists
2019-02-07 16:05:21.525895-0500 HybridPool[5063:1305478] doc value: false
2019-02-07 16:05:21.525933-0500 HybridPool[5063:1305478] doc key: metadata
2019-02-07 16:05:21.525971-0500 HybridPool[5063:1305478] doc value: [object Object]
2019-02-07 16:05:21.526008-0500 HybridPool[5063:1305478] doc key: isEqual
2019-02-07 16:05:21.526232-0500 HybridPool[5063:1305478] doc value: function (e){if(!(e instanceof t))throw Nr("isEqual","DocumentSnapshot",1,e);return this._firestore===e._firestore&&this._fromCache===e._fromCache&&this._key.isEqual(e._key)&&(null===this._document?null===e._document:this._document.isEqual(e._document))}
2019-02-07 16:05:21.526289-0500 HybridPool[5063:1305478] doc key: convertObject
2019-02-07 16:05:21.526329-0500 HybridPool[5063:1305478] doc value: function (t,e){var n=this,r={};return t.forEach(function(t,i){r[t]=n.convertValue(i,e)}),r}
2019-02-07 16:05:21.526429-0500 HybridPool[5063:1305478] doc key: convertValue
2019-02-07 16:05:21.526496-0500 HybridPool[5063:1305478] doc value: function (t,e){if(t instanceof gi)return this.convertObject(t,e);if(t instanceof vi)return this.convertArray(t,e);if(t instanceof mi){var n=t.value(e),r=this._firestore.ensureClientConfigured().databaseId();return t.databaseId.isEqual(r)||$n("Document "+this._key.path+" contains a document reference within a different database ("+t.databaseId.projectId+"/"+t.databaseId.database+") which is not supported. It will be treated as a reference in the current database ("+r.projectId+"/"+r.database+") instead."),new rc(n,this._firestore)}return t.value(e)}
2019-02-07 16:05:21.526629-0500 HybridPool[5063:1305478] doc key: convertArray
2019-02-07 16:05:21.526713-0500 HybridPool[5063:1305478] doc value: function (t,e){var n=this;return t.internalValue.map(function(t){return n.convertValue(t,e)})}

ОБНОВЛЕНИЕ

Я понял, что могу получить тот же документ, используя where на немcollection, но когда я пытаюсь это сделать - он действует так, как если бы функция никогда не выполнялась - без сообщений об ошибках или любого другого вида сообщений - он останавливается после:

console.log("app.selectedPoolId:", app.selectedPoolId);

Он выводит то же самое из-заприведенная выше строка, а затем перестает работать без каких-либо ошибок, это код, который я запускаю для запроса коллекции:

    db.collection("pools").where("name", "==", app.selectedPoolId).get()
        .then(function(querySnapshot) {
            querySnapshot.forEach(function(doc) {
                // doc.data() is never undefined for query doc snapshots
                console.log(doc.id, " => ", doc.data());
            });
        })
        .catch(function(error) {
            console.error("Error writing document: ", error);
        });

Опять же, никаких результатов вывода из вышеуказанного кода.

Здесьfirestore лучшие практики - я их просмотрел и думаю, что мой код соответствует:

Лучшие практики Firestore

1 Ответ

0 голосов
/ 07 февраля 2019

Я не уверен в этом, но проблема может заключаться в том, что в имени документа «пул Иамона» есть пробел, поэтому он не распознает все это или останавливается в первой части строки «Имон».

Раньше, когда я использовал Firestore, имена документов, которые я использовал, не содержали пробелов, поэтому проблема могла быть в наличии пробелов.

Попробуйте переименовать документ в EamonsPool или имя без пробела и повторите попытку.

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