JSON Web服务,用于访问用户可以使用Javascript访问的所有文件。 (Liferay 7)

时间:2018-04-11 01:56:12

标签: javascript json liferay liferay-7

我正在尝试通过Javascript使用JSON Web服务API来获取用户有权访问的文档库中的所有文件,我试图使用它:

Liferay.Service(
    '/dlfileentry/get-group-file-entries',
    {
        groupId: gId,
        userId: userId,
        rootFolderId: 0,
        start: 0,
        end: 300,
        '-obc': ''
    },
    function(obj) {
        console.log(obj);
    }
);

但是,此调用仅检索由该特定用户上载的文件,这不是我想要的。 是否有另一种方法可以检索特定用户有权查看的所有文档?

我考虑过使用网络服务电话:

Liferay.Service(
    '/assetentry/get-entries',
    {
    entryQuery: 
    },
    function(obj) {
        console.log(obj);
    }
);

但是,我不知道这是否会产生类似的结果,我不知道如何将AssetEntryQuery对象传递给entryQuery参数。

更新:执行此操作的第二种方法(显然不是最好的方法)是使用/dlfolder/get-subfolder-ids获取所有子文件夹ID,然后使用{{1}遍历每个文件夹包括root并保存这些文件:

/dlapp/get-file-entries

但是你可以想象,这意味着每个文件夹调用一个Web服务,听起来似乎非常低效。使用Web服务的另一种方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到了一个Web服务,它将返回用户有权访问的所有文件。通过将'/assetentry/get-entries'与空条目{}一起使用,它将返回通过权限检查的所有文件。

Liferay.Service(
        '/assetentry/get-entries',
        {
            entryQuery: {}
        },
        function(object) {
            console.log('/assetentry/get-entries empty');
            console.log(object);
        }
);

如果要将其限制为groupId或其他一些参数,则需要在entryQuery参数中添加一个包含这些条件的数组:

entryQuery: {"classNameIds":[10007],"groupIds":[10182]}

这个解决方案正是我所需要的。