0

我很确定这是不可能的,但我还是要问。

我正在构建一个处理患者记录的系统。新用户需要能够搜索患者,并在找到后从管理员请求访问他们的文件。

即使用户无权访问它们,我如何显示所有文档的列表?只有将它们添加到 Readers 字段后,它们才会出现在视图中,这违背了搜索的目的。

我的计划是创建 2 个文档 - 原始患者文档和包含姓名、地址的精简文档,仅用于搜索

有没有更好的方法来做到这一点,或者 2 文档方法是要走的路?

4

1 回答 1

4

使用 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>
于 2013-03-22T10:24:10.490 回答