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

How to use queryString in the nodejs client for 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。

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

试试这个:

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


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

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

正如@robotdan 所说,您必须在 search 属性 中包含 queryString 字段。虽然乍一看可能并不明确,但您可以通过查看请求正文字段来暗示:

Fusion Auth User API screenshot 正如您在第 3 行中看到的,有一个 search.queryString,您应该在其中定义要搜索的字符串,在您的例子中就是所有内容 (*)。此外,如果您想要一个有序列表,请查看包含可用排序字段的第 6 行,并在第 7 行中查看结果的顺序:ascdesc(它没有出现在屏幕截图中所以看看 FusionAuth 官方文档页面。

假设您希望所有名称必须包含 foo 的用户在 fullName 的任何位置,按用户 email 降序排列。你的对象应该是这样的:

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

注意开头和结尾的 *:那些星号告诉搜索引擎 foo 可能有一个前缀 and/or 一个后缀(但你不关心关于他们)。