ajv-validator / ajv-validator/ajv

[request] $data reference for `default` keyword.

Offen
#681 15 Kommentare 5 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
TypeScript
Sterne
14.8k
Forks
1k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

**What version of Ajv are you using? Does the issue happen if you use the latest version?**
I'm looking at 6.0.0 docs, which state `$data reference` is not available for the `default` keyword (https://github.com/epoberezkin/ajv#data-reference).

**Ajv options object**

```javascript
{ allErrors: true }
```

**JSON Schema**

```json
{
"properties": {
"defaultNumber": {
"type": "integer",
},
"numbers": {
"type": "object",
"additionalProperties": { "$ref": "#/definitions/myRef" },
},
},
"definitions": {
"myRef": {
"type": "object",
"properties": {
"value": { "type": "integer" },
"defaultValue": {
"type": "integer",
"default": { "$data": "/defaultNumber" }
},
}
},
},
}
```

**Sample data**

```json
{
"defaultNumber": 3,
"numbers": {
"one": { "value": 1 }
}
}
```

**Your code**
```javascript
var Ajv = require("ajv");
var ajv = new Ajv({ allErrors: true });

var schema = {
"properties": {
"defaultNumber": {
"type": "integer",
},
"numbers": {
"type": "object",
"additionalProperties": { "$ref": "#/definitions/myRef" },
},
},
"definitions": {
"myRef": {
"type": "object",
"properties": {
"value": { "type": "integer" },
"defaultValue": {
"type": "integer",
"default": { "$data": "/defaultNumber" }
},
}
},
},
};

var validate = ajv.compile(schema);

test({
"defaultNumber": 3,
"numbers": {
"one": { "value": 1 }
}
});

function test(data) {
var valid = validate(data);
console.log(data.numbers.one)
if (valid) console.log("Valid!");
else console.log("Invalid: " + ajv.errorsText(validate.errors));
}
```

**Validation result, data AFTER validation, error messages**

```
{
"defaultNumber": 3,
"numbers": {
"one": { "value": 1 }
}
}
```

**What results did you expect?**
I would like to have `numbers.one.default` to be filled in with the number 3 (from `defaultNumber` at root).
```
{
"defaultNumber": 3,
"numbers": {
"one": {
"value": 1,
"default": 3
}
}
}
```

**Are you going to resolve the issue?**
I'm not sure, is this a reasonable request to begin with?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.