1

データベース テーブル スキーマに関する情報を受け付けています。テーブルの列に関する情報が含まれています。したがって、明らかなように、これらの列nameには type の属性がありますstring。ただし、それらの名前は、事前に選択された名前リストからのものである必要はありません。それらは、ユーザーが入力したものであれば何でもかまいません。ここで、複合キーにすることができ、ユーザーが入力した列のみを含むテーブルの一意のキーも受け入れたいと考えています。つまり、一意のキーは、json データでユーザーが提供する列で構成できます。

したがって、技術的に必要なのは、一意のキーを表す配列の項目の型となる動的に入力された文字列列挙 (入力 j​​son データから) です。したがって、配列の各要素は列名になります。

たとえば、以下のjsonデータ

"columns": 
{
    "col1": "val1",
    "col2": "val2",
    "col3": "val3"
},
"uniquelKey": ["val1","val2"]

有効ですが、

"columns": 
{
    "col1": "val1",
    "col2": "val2",
    "col3": "val3"
},
"uniquelKey": ["val1","val4"]

val4指定された inがリストuniqueKeyに存在しないため、 は無効です。columnsこれは、現在の json-schema の仕様と実装で達成できますか? この点で、私は何の方向性も見つけられませんでした。

私の現在のjsonスキーマは次のようになります。

...
"attributes":
{
    "type": "array",
    "items":
    {
        "type": "object",
        "properties": 
        {
            "name": {"type": "string"},
            ...
        },
        "required": ["name",...],
        ...
    }
},
"uniqueKey": 
{
    ... ** here is where I have stuck ** ...
}
...
4

1 に答える 1

2

いいえ、これは現在のバージョンの JSON スキーマでは実行できません。検証中のデータの値を参照するメカニズムはありません。startDate同様に、with プロパティとendDatewhere startDateis less thanのオブジェクトを検証する方法はありませんendDate

この制限に対処するための提案があり、将来の JSON スキーマ ドラフトで検討されています。したがって、将来的にはできるようになるかもしれませんが、今はできません。

issue 51$dataの JSON Schema 仕様の議論を参照してください:タイプの拡張:

于 2015-06-26T18:48:31.493 に答える