node.js - 成员必须满足正则表达式模式:[\\S]+
问题描述
我正在尝试在 aws 上执行 lambda 以列出我的 cognito 用户池的用户。这是我在 nodejs 中的代码:
const queryStringParameters = event.queryStringParameters;
var paginationToken = '';
if ( queryStringParameters && queryStringParameters.paginationToken ) {
paginationToken = queryStringParameters.paginationToken;
}
var limit = '10';
if ( queryStringParameters && queryStringParameters.limit ) {
limit = queryStringParameters.limit;
}
var params = {};
if ( paginationToken != '' ) {
params = {
UserPoolId: userPoolId, /* required */
//Filter: 'STRING_VALUE',
Limit: limit,
PaginationToken: paginationToken
};
} else {
params = {
UserPoolId: userPoolId, /* required */
//Filter: 'STRING_VALUE',
Limit: limit,
PaginationToken: paginationToken
};
}
cognitoidentityserviceprovider.listUsers(params, function (err, data) {
if (err) {
response.code = "ERROR"
response.message = "Han ocurrido errores"
response.result = err
callback(null, {
statusCode: 500,
headers,
body: JSON.stringify(response)
})
}
response.code = "OK"
response.message = ""
response.result = data
callback(null, {
statusCode: 200,
headers,
body: JSON.stringify(response)
});
});
我正在使用在其他调用中返回的 paginationToken 在邮递员上测试这个 lambda。返回此错误。
{
"code": "ERROR",
"message": "Han ocurrido errores",
"result": {
"message": "1 validation error detected: Value 'CAISlAIIARLtAQgDEugBAEZixxOnN/v8zMwVa6CHVhw64qYzvU6Iyb5RkRwGsNS eyJAbiI6IlBhZ2luYXRpb25Db250aW51YXRpb25EVE8iLCJuZXh0S2V5IjoiQUFBQUFBQUFCYnYwQVFFQnU0V1pTVlZ1U0FDU1JZODJ4Mk9lL2RxVFRXbVZ3a3RScGVwQXNQT2JTWnBsYm1ZN01ETm1OREk0WVRNdFlqRmxZeTAwT0RZeExUaGpObVF0WkRZeU1ETXlZamd5T1RNek93PT0iLCJwcmV2aW91c1JlcXVlc3RUaW1lIjoxNTY1ODQ1MzU5NTU3fRog0tB4u0ATjZVYBFSGxE llc8AXn2 tEFfFFohzHQmeyY=' at 'paginationToken' failed to satisfy constraint: Member must satisfy regular expression pattern: [\\S]+",
"code": "InvalidParameterException",
"time": "2019-08-18T17:37:37.581Z",
"requestId": "acd206e0-006a-4208-b298-78d8cd8d770e",
"statusCode": 400,
"retryable": false,
"retryDelay": 12.077823285760259
}
}
我正在尝试这个:
https://{endpoint}/dev/users/list?limit=10&paginationToken=CAISlAIIARLtAQgDEugBAEZixxOnN/v8zMwVa6CHVhw64qYzvU6Iyb5RkRwGsNS+eyJAbiI6IlBhZ2luYXRpb25Db250aW51YXRpb25EVE8iLCJuZXh0S2V5IjoiQUFBQUFBQUFCYnYwQVFFQnU0V1pTVlZ1U0FDU1JZODJ4Mk9lL2RxVFRXbVZ3a3RScGVwQXNQT2JTWnBsYm1ZN01ETm1OREk0WVRNdFlqRmxZeTAwT0RZeExUaGpObVF0WkRZeU1ETXlZamd5T1RNek93PT0iLCJwcmV2aW91c1JlcXVlc3RUaW1lIjoxNTY1ODQ1MzU5NTU3fRog0tB4u0ATjZVYBFSGxE+llc8AXn2+tEFfFFohzHQmeyY=
解决方案
问题是 PaginationToken 中的加号 (+)。端点接收带有空格而不是加号的令牌,因此简单的替换将修复它。
PaginationToken = PaginationToken.replace(/\ /g,'+')
推荐阅读
- angular - 如何过滤 BehaviorSubject 数组?
- javascript - 为什么 conv.add 在使用 API 时 console.log 不起作用
- matlab - Matlab:如何将我的结构保存到 CSV 文件?
- php - PHP Web 应用程序在本地工作,但在 Heroku 上不工作——Heroku 找不到文件路径
- assembly - RISC-V中调用者保存和被调用者保存有什么区别
- javascript - 未捕获的 TypeError:model.predict 不是函数
- javascript - 带有 if 和 if not 语句的 JavaScript for-loop 仅显示当前项目,并隐藏所有其他项目
- r - Rstudio 中的 glmer 模型运行但显示