2017-11-01 2 views

Antwort

3

Die Antwort hängt davon ab, welche API Sie verwenden möchten.

Für mobile/web SDKs gibt es keine Möglichkeit zu tun, was Sie seit diesen Kunden do not support projections of any kind.

Für Server SDKs Sie eine leere Projektion tun, das heißt

db.collection('foo').select() 

In diesem Fall wird der Server, den Sie die Dokumente senden, die übereinstimmen, wird aber alle Felder aus dem Abfrageergebnis weglassen.

Für die REST-API können Sie das Äquivalent mit einem runQuery tun, die eine Feldmaske von '__name__' enthält, etwa so:

curl -vsH 'Content-Type: application/json' \ 
    --data '{ 
    "parent": "projects/my-project/databases/(default)", 
    "structuredQuery":{ 
     "from": [{"collectionId": "my-collection"}], 
     "select": { 
     "fields": [{"fieldPath":"__name__"}] 
     } 
    } 
    }' \ 
    'https://firestore.googleapis.com/v1beta1/projects/my-project/databases/(default)/documents:runQuery' 

Ersatz my-project und my-collection als angemessen. Beachten Sie, dass die "collectionId" in der "from" nur die richtige Namen Komponente ist. Wenn Sie Schlüssel in einer Untersammlung möchten, möchte die REST-API den Namen des übergeordneten Dokuments im Feld "parent".

+0

Das ist, was ich brauche, danke! – elliepooh

+0

Gibt es eine Möglichkeit, Schlüssel vor der Auswahl zu bestellen? Ich habe versucht db.collection (...). OrderBy (...). Select(). Get(), aber es scheint nicht zu funktionieren. Jede Hilfe würde sehr geschätzt werden! – elliepooh

+0

Dies ist wahrscheinlich besser als eine neue Frage mit dem, was Sie versucht haben, die Ergebnisse, die Sie erhalten haben, und die Ergebnisse, die Sie erwartet. Das heißt, es sollte so lange funktionieren, wie sich die Felder, die Sie bestellen möchten, auch in den Feldern befinden, die Sie auswählen. –

Verwandte Themen