'How to simultaneously validate a single object AND an array of single objects using OW?
I'm using the OW library to to validate incoming json objects. Currently, it can validate a single transaction object with this snippet below but how can I validate a single AND multiples of a single object in an array at the same time?
// ... like this
// ... both should be validated
{
transaction: 1,
transaction: [1,1]
}
Successfully validates a single object
ow(event, 'websocket-event', validEvent()) // triggers the validation
const validEvent = ow.optional.object.exactShape({
//....
transaction: ow.optional.object.exactShape({
id: ow.optional.string,
hash: ow.optional.string.is(validTxHash),
txid: ow.optional.string.is(validTxid),
startTime: ow.optional.number.is(wholePosNum),
status: ow.optional.string,
gas: ow.any(ow.optional.string.is(wholePosNum), ow.optional.number),
gasPrice: ow.any(ow.optional.string.is(wholePosNum), ow.optional.number),
value: ow.any(ow.optional.string.is(wholePosNum), ow.optional.number),
input: ow.optional.string,
to: ow.optional.string.is(validAddress),
from: ow.optional.string.is(validAddress),
originalHash: ow.optional.string.is(validTxHash)
})
//....
})
But how can OW validate if the transaction object is an ARRAY of transaction objects? So far I have tried ow.any but that didn't work. There are not a lot of real world examples of OW being used :(
Not working: not validating an array of objects
transaction: ow.any(
ow.optional.transactionPredicate, // check the single case
ow.optional.array.is(transactionPredicate) // check the multi case (likely incorrect)
)
OW Library: https://www.npmjs.com/package/ow
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
