ajv-validator / ajv-validator/ajv

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

Aberta
#681 15 comentários 5 reações 0 responsáveis Ver no GitHub
enhancement
Linguagem predominante
TypeScript
Estrelas
14.8k
Forks
1k
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

**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?

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.