私の目標は、投稿のインデックスルートを作成することです。ユーザーはいくつかのクエリ パラメータ (つまり、タグ、タイプ) を指定できる必要がありますが、他のパラメータは指定できないはずです。明確にするために:
これは大丈夫です:
/posts
/posts?tags=food
/posts?type=regular&tags=stackoverflow
これは大丈夫ではありません:
/posts?title=Hello
これはhapiパックの設定です:
servers: [
{
host: 'localhost',
port: 3000,
options: {
labels: ["api"],
validation: {
abortEarly: false,
presence: 'forbidden'
}
}
}
],
presence: forbidden
オプションに注意してください。
これはルート構成です:
handler: function (request, reply) {
Post.find(request.query, function (err, posts) {
if(err) {
console.log(err);
}
reply(posts);
});
},
validate: {
query: {
type: Joi.string().optional(),
tags: Joi.string().optional()
}
}
type
私の考えは、検証では、およびパラメーターのサブセットtags
(空のクエリを含む) を許可する必要があるというものでした。ただし、許可されたリクエストを行った後、次のエラーが発生します。
{
"statusCode": 400,
"error": "Bad Request",
"message": "value is not allowed",
"validation": {
"source": "query",
"keys": [
"value"
]
}
}
何故ですか?もちろん、という名前のキーはありませんvalue
。検証を希望どおりに動作させるにはどうすればよいですか?