我很确定这是不可能的,但我还是要问。
我正在构建一个处理患者记录的系统。新用户需要能够搜索患者,并在找到后从管理员请求访问他们的文件。
即使用户无权访问它们,我如何显示所有文档的列表?只有将它们添加到 Readers 字段后,它们才会出现在视图中,这违背了搜索的目的。
我的计划是创建 2 个文档 - 原始患者文档和包含姓名、地址的精简文档,仅用于搜索
有没有更好的方法来做到这一点,或者 2 文档方法是要走的路?
使用 sessionAsSigner 获取数据库签名者权限的数据库对象并对其运行搜索。这将为您提供可以类似于使用数据表查看的文档集合。
示例(对于中等视图效果很好 - 对于较大的视图可能需要一些优化):
<xp:panel id="viewPanel" styleClass="usersPanel">
<xp:this.dataContexts>
<xp:dataContext var="usersList">
<xp:this.value><![CDATA[#{javascript:
var uview = sessionAsSigner.getCurrentDatabase().getView("someView");
uview.FTSearch("Some query");
return uview.getAllEntries();
}]]></xp:this.value>
</xp:dataContext>
</xp:this.dataContexts>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager2" for="usersList">
</xp:pager>
<xp:dataTable id="usersList" rows="30"
var="entry" value="#{usersList}">
<xp:column id="column1">
<xp:this.facets>
<xp:span xp:key="header"
styleClass="frameworkViewColumnHeader">
Użytkownik
</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField1"
value="#{javascript:entry.getColumnValues().get(0)}">
</xp:text>
</xp:column>
<xp:column id="column2">
<xp:this.facets>
<xp:span xp:key="header"
styleClass="frameworkViewColumnHeader">
Instytucja
</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField2"
value="#{javascript:entry.getColumnValues().get(1)}">
</xp:text>
</xp:column>
</xp:dataTable>
</xp:panel>