如何在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 行中查看结果的顺序:asc
或 desc
(它没有出现在屏幕截图中所以看看 FusionAuth 官方文档页面。
假设您希望所有名称必须包含 foo
的用户在 fullName
的任何位置,按用户 email
降序排列。你的对象应该是这样的:
const request = {
search: {
queryString: '*foo*',
sortFields: [{ name: 'email', order: 'desc' }]
}
}
注意开头和结尾的 *
:那些星号告诉搜索引擎 foo
可能有一个前缀 and/or 一个后缀(但你不关心关于他们)。
我正在使用以下代码获取所有用户。它适用于 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 行中查看结果的顺序:asc
或 desc
(它没有出现在屏幕截图中所以看看 FusionAuth 官方文档页面。
假设您希望所有名称必须包含 foo
的用户在 fullName
的任何位置,按用户 email
降序排列。你的对象应该是这样的:
const request = {
search: {
queryString: '*foo*',
sortFields: [{ name: 'email', order: 'desc' }]
}
}
注意开头和结尾的 *
:那些星号告诉搜索引擎 foo
可能有一个前缀 and/or 一个后缀(但你不关心关于他们)。