如何在nodejs客户端中使用queryString进行FusionAuth?

时间:2019-04-04 14:41:43

标签: fusionauth

我正在使用以下代码来获取所有用户。它可与Java客户端一起使用,但会出现以下错误

{ code: '[invalid]', api_1 | message: 'You must specify either the [ids], [queryString], [email] or [username] property for a GET request.' }

我正在尝试

    let requestJSON = {}
    requestJSON.queryString = "*";
    client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);

    function handleResponse (clientResponse) {
        console.log(clientResponse.errorResponse.generalErrors[0]);
    }

也由于某种原因,它假定这是一个GET请求。

我已经尝试使用Postman进行相同的操作,但是它不起作用。我到处都在使用FusionAuth 1.5.0。

2 个答案:

答案 0 :(得分:1)

客户端库使用带有JSON正文的POST请求来执行搜索。在https://fusionauth.io/docs/v1/tech/apis/users#search-for-users

处查看POST /api/user/search API文档。

尝试以下方法:

let requestJSON = {
  search: {
    queryString: "*"
  }
};


client.searchUsersByQueryString(requestJSON).then(handleResponse).catch(handleResponse);

function handleResponse (clientResponse) {
  console.log(clientResponse.errorResponse.generalErrors[0]);
}

答案 1 :(得分:1)

就像@robotdan所说的那样,您必须在queryString属性内包括search字段。尽管乍看之下可能并不明确,但您可以通过查看请求正文字段来暗示这一点:

Fusion Auth User API screenshot 如第三行所示,在search.queryString处应定义要搜索的字符串,在您的情况下为所有字符串(*)。另外,如果您想要一个有序列表,请查看包含可用排序字段的第六行,并在第七行中查看结果的顺序:ascdesc(它不会出现在屏幕截图中)因此,请访问FusionAuth官方文档页面。

想象一下,您希望所有名称在其foo的任何位置都必须包含fullName的用户,由用户email降序排列。您的对象应该是这样的:

const request = {
  search: {
    queryString: '*foo*',
    sortFields: [{ name: 'email', order: 'desc' }]
  }
}

在开头和结尾都注意*:这些星号告诉搜索引擎foo可能有前缀和/或后缀(但您并不在乎它们)。