Pel*_*umi 2 javascript api endpoint express express-validator
我希望用户能够在端点中写入特定的帐号,并尝试验证端点参数是否存在于我的数据库中。我无法让它工作,请问我做错了什么?
我的验证
const validateReq: [
param('accountNumber').exists().custom(acctNo => accountNumberExist(acctNo)),]
Run Code Online (Sandbox Code Playgroud)
我的 accountNumberExist 函数
accountNumberExist(inputAcct) {
const isfound = accounts.find(account => account.accountNumber === inputAcct);
if (isfound === undefined) throw new Error('Account Number not found');
}
Run Code Online (Sandbox Code Playgroud)
我的账户档案
const accounts = [
{
id: 1,
accountNumber: 1234567890,
createdOn: new Date(),
owner: 1,
type: 'current',
balance: 23444.43,
status: 'active',
},
{
id: 2,
accountNumber: 1234167890,
createdOn: new Date(),
owner: 1,
type: 'savings',
balance: 2233444.43,
status: 'active',
},
{
id: 3,
accountNumber: 9987654321,
createdOn: new Date(),
owner: 2,
type: 'saving',
balance: 73444.43,
status: 'active',
},
];
Run Code Online (Sandbox Code Playgroud)
但这总是抛出“找不到帐号”错误,即使 req.param 存在于我的帐户数据库中。
参数string由 express 中间件解析。假设我对下面定义的路径进行了请求,例如/some/1000
app.get('/some/:path', (req, res, next) => {
console.log(typeof req.param.path)
// outputs string
})
Run Code Online (Sandbox Code Playgroud)
因此,您需要将传入参数解析为整数 (Number),因为您已将其存储accountNumber为整数。所以添加toInt到像下面这样的链应该可以解决它:
const validateReq: [
param('accountNumber').exists().toInt().custom(acctNo => accountNumberExist(acctNo)),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11123 次 |
| 最近记录: |