2016-10-07 3 views
0

Ich möchte das Feld abfragen, die leer sind und die nicht leer sind, indem Sie die Sensenet Odata Rest-API verwenden. Ihre Dokumentation erwähnt eine Filterfunktion namens "length". Ich habe versucht, das Feld mit der Längenoperation abzufragen, aber es schlägt mit dem Fehler fehl.Sensenet-Längenfilter Funktioniert nicht

Dies ist der Filter I

$filter=length(Name) eq 2 

Sense/Net 6.5.4.9496

Exception

"code": "NotSpecified", 
"exceptiontype": "SnNotSupportedException", 
"message": { 
"lang": "en-us", 
"value": "Unknown method: length" 
}, 

Wiki-Link http://wiki.sensenet.com/OData_REST_API

Antwort

2

Die Länge Betrieb war im Preis enthalten verwendet haben in der Liste der Unterstützung ted Methoden falsch, wir entschuldigen uns dafür. SenseNet kompiliert diese Filter zu Lucene Abfragen und es ist nicht möglich, eine solche Abfrage in Lucene zu erstellen, die eine Operation auf einem Feld ausführt.

(die übrigen Methoden, wie substringof oder starts kann leicht zu einem Wildcard-Ausdruck kompiliert werden, so dass funktionieren sollte)

ihre ‚leer‘ Ausdrücke werden auch nicht von Lucene, unterstützt leider wegen Dokument/Termstruktur. So wird der folgende Ausdruck nicht funktioniert entweder:

Description eq '' 

bearbeitet: als Behelfslösung, Entwickler Feldindex Handler einen benutzerdefinierten erstellen kann.

Für jedes Feld, das Sie für Leere überprüfen mögen (z Beschreibung), können Sie eine technische versteckt Bool Feld (IsDescriptionEmpty) in der Inhaltstypdefinition erstellen. Das einzige, was Sie erstellen und definieren müssen, ist eine benutzerdefinierte Feldindex-Handler-Klasse. In Ihrem Fall würde es von dem integrierten Bool-Feld-Index-Handler erben und Sie könnten einen booleschen Indexwert zurückgeben, abhängig davon, ob das Zielfeld (in diesem Fall Beschreibung) leer ist oder nicht.

Danach würden Sie in der Lage suchen exressions wie folgt zu definieren:

+Type:File +IsDescriptionEmpty:true 

Bitte lesen Sie die Wiki-Artikel unten und den Quellcode für Index-Handler Beispiele.

How to create a field indexhandler

+0

Gibt es eine andere Art und Weise zu wissen, dass das Feld leer oder nicht leer in sensenet ist? –

+0

Hallo, Ich habe eine Umgehung für Entwickler zu der obigen Antwort hinzugefügt: Erstellen eines benutzerdefinierten Feld-Index-Handlers. –

+0

Hallo, Miklos Danke für das Update. –

Verwandte Themen