シリアル化された文字列として GET リクエスト クエリ パラメータで渡される JSON の検証に問題があります。
私が達成する必要があるのは、このシリアル化された文字列を解析して JSON に戻し、Joi を使用して検証することです。
例: Give は JSON です
{
limit: {size:10, page:0},
filter: {filter_by: 'foo', filter_val: 'foo', from: '1/1/2016',to: '1/1/2016' }
}
そして、この JSON はクエリ文字列に変換されます。
limit%5Bsize%5D=10&limit%5Bpage%5D=0&filter%5Bfilter_by%5D=foo&filter%5Bfilter_val%5D=foo&filter%5Bfrom%5D=1%2F1%2F2016&filter%5Bto%5D=1%2F1%2F2016
確認するには、次のようなものが必要です。
validate: {
query: {
limit: Joi.someMethodToGetJsonFromString.object().keys({
size: Joi.number(),
page: Joi.number()
}
filter: Joi.someMethodToGetJsonFromString,.object().keys({
filter_by: Joi.string().valid(['option1', 'option2']),
filter_val: Joi.string(),
from: Joi.date(),
to: Joi.date(),
}
}
Joi でこのシナリオに役立つものはありますか、それともカスタム検証関数を作成する必要があります。