2016-04-07 6 views
0

Wenn Domino Access View für den Zugriff auf eine Datenbankansicht als REST-Aufruf verwendet wird, müssen die Ansichtselektionsparameter als Teil der URL-Abfragezeichenfolge übergeben werden, insbesondere um einen Datumsbereich zu akzeptieren? Dies beschränkt die Ergebnisse auf bestimmte Kriterien?Kann eine Domino-Zugriffsansicht die Ansichtsauswahlkriterien akzeptieren

Ich habe die Parameter "keys" und "keysmatch" gesehen, aber das wird nicht mit dem Bereich Auswahlproblem helfen.

Verdächtige Nein, aber wollte nur ein Experten-Feedback!

Antwort

1

Soweit ich weiß, ist das nicht möglich. Sie können den Abfrageparameter verwenden, um Dokumente abzurufen, die der von Ihnen gesendeten Suchanfrage entsprechen (die eine Domino-Suche durchführt).

Weitere Details finden Sie in der Dokumentation finden Sie hier: View/folder entries GET

+0

Ja - das ist t Zu der Schlussfolgerung kam ich auch. Die Implementierung der Suche über den Volltextindex hat den Job erledigt, obwohl der Leistungs-Overhead für diesen Wert nicht sicher ist – oidsman

1

Sie könnten leicht Ihren eigenen REST-API auf dem Domino-Server schreiben und haben es zum Beispiel ein Datumsbereich übernehmen.

Ich habe Beispiele in meiner Darstellung hier: http://blog.texasswede.com/my-connect-2016-presentation-demo-database/

Hier ist der Lotusscript-Code für den Server-Agent ist, dass der Rest Anruf macht:

Use "Class.URL" 
Use "Class.JSON" 

Sub Initialize 
    '*** Local Notes classes used in agent 
    Dim session As New NotesSession 
    Dim db As NotesDatabase 
    Dim thisdb As NotesDatabase 
    Dim view As NotesView 
    Dim col As NotesViewEntryCollection 
    Dim entry As NotesViewEntry 
    Dim doc As NotesDocument 
    '*** Custom classes 
    Dim url As URLData 
    Dim json As JSONData 
    '*** Local variables to hold arguments passed from URL 
    Dim startdate As String 
    Dim enddate As String 
    '*** Other local variables 
    Dim jsontext As String 

    '*** Create new URLData object 
    Set url = New URLData() 
    '*** Create new JSONData object 
    Set json = New JSONData() 

    '*** Check start date and convert from ISO to US date format 
    If url.IsValue("start") Then 
     startdate = ISOtoUS(url.GetValue("start")) 
    Else 
     startdate = "01/01/1980" 
    End If 

    '*** Check end date and convert to US date format 
    If url.IsValue("end") Then 
     enddate = ISOtoUS(url.GetValue("end")) 
    Else 
     enddate = "12/31/2199" 
    End If 

    '*** Send MIME header to browser 
    Print "content-type: application/json" 
    jsontext = "" 
    Set db = session.CurrentDatabase 
    Set view = db.GetView("Events") 
    Set col = view.AllEntries 
    Set entry = col.GetFirstEntry() 
    Do Until entry Is Nothing 
     If CDat(entry.ColumnValues(0))>=CDat(startdate) Then 
      If CDat(entry.ColumnValues(0))<=CDat(enddate) Then 
       Call json.SetValue("id", CStr(entry.ColumnValues(5))) 
       Call json.SetValue("title",CStr(entry.ColumnValues(3))) 
       Call json.SetValue("start", Format$(CDat(entry.ColumnValues(7)),"mm/dd/yyyy hh:nn ampm")) 
       Call json.SetValue("end", Format$(entry.ColumnValues(8),"mm/dd/yyyy hh:nn ampm")) 
       Call json.SetValue("className","eventData eventData" + CStr(entry.ColumnValues(6))) 
       Call json.NoStatus() 
       '*** Make the entry editable (change date/time) 
       Call json.SetBoolean("editable", True) 
      End If 
     End If 
     jsontext = jsontext + json.GetJSON() + "," + Chr$(13) 
     Set entry = col.GetNextEntry(entry) 
    Loop 
    If Len(jsontext)>4 Then 
     jsontext = Left$(jsontext,Len(jsontext)-2) 
    End If 
    Print "[ " + jsontext + " ]" 
End Sub 


%REM 
    Function ISOtoUS 
    Description: Convert ISO date to US date, 
    e.g 2015-05-08 to 05/08/2015 
%END REM 
Function ISOtoUS(dateISO As String) As String 
    Dim tmp As String 
    ' 2015-02-03 
    tmp = Mid$(dateISO,6,2) + "/" 
    tmp = tmp + Mid$(dateISO,9,2) + "/" 
    tmp = tmp + Left$(dateISO,4) 
    ISOtoUS = tmp 
End Function 

Beachten Sie, dass es zwei Hilfsklassen verwendet ich schrieb, können Sie den Code für sie auf meinem Blog finden auch: http://blog.texasswede.com/free-code-class-to-read-url-name-value-pairs/ und http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/

+0

Danke für diese Option. Insbesondere war es eine Abfrage in der Domino Access-Ansicht, da diese bereits implementiert wurde, um Zeit zu sparen, aber Links wirklich hilfreich. – oidsman