Простой способ проверить форму объекта в Javascript - PullRequest
0 голосов
/ 31 мая 2019

Мне интересно, есть ли простой способ проверки формы объекта в Javascript.

Сейчас у меня есть функция, которая проверяет форму объектов конечной точки, например:

function validateEndpointShape(endpoint: any, hasId: boolean): boolean 
{
return endpoint
&& (hasId ? typeof endpoint.id === 'string' : true)
&& typeof endpoint.name === 'string'
&& typeof endpoint.description === 'string'
&& typeof endpoint.url === 'string'
&& GenericApiEndpointMethods[endpoint.method] !== undefined
&& ApiEndpointTypes[endpoint.apiEndpointType] !== undefined
&& endpoint.group
&& typeof endpoint.group.groupPublicKey === 'string'
&& typeof endpoint.group.groupName === 'string'
&& typeof endpoint.reason === 'string'
&& typeof endpoint.isPublic === 'boolean'
&& typeof endpoint.isActive === 'boolean'
&& authTypes[endpoint.authType] !== undefined
&& Array.isArray(endpoint.parameters)
&& Array.isArray(endpoint.headers);
}

Это может быть громоздким и громоздким.И я не хочу делать это для каждого объекта, который я создаю.

Когда конечная точка входит в нашу функцию облачной пожарной базы, мы должны выполнить несколько проверок, чтобы мы знали, когда следует отклонитьплохие данные.Форма конечной точки является одной из таких проверок.

Я пытался сделать это:

Delete req.body.reason;
req.body[‘extraField’] = ‘xxx’;
Const endpoint: GenericApiEndpoint = req.body;
console.log(‘endpoint =‘, endpoint);

Но Javascript это не волнует.Он будет принимать конечную точку без причины (обязательное поле) и с extraField (несуществующее поле в модели) и назначит ее объекту, типизированному как GenericApiEndpoint.Конечная точка печатается без причины и с помощью extraField.

Я также пытался:

Const endpoint = <GenericApiEndpoint>req.body;

… но Javascript также не заботится об этом.

Кто-нибудь знает опростой способ проверить форму объектов в Javascript?

1 Ответ

1 голос
/ 31 мая 2019

Существует множество способов проверки данных, и я бы сказал, что в любой системе, в которой вы хотите, чтобы данные сохранялись и соответствовали определенной модели, вам нужна некоторая проверка полей. ORM обычно делают это, но вы также можете использовать библиотеку, такую ​​как:

По сути, суть в том, что если вы хотите проверить объекты, чтобы убедиться, что они соответствуют определенной форме (модели / схеме), вам придется определить эту форму заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...