ajv-validator / ajv-validator/ajv
[request] $data reference for `default` keyword.
- 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
Avaliação
Esta issue ainda não foi avaliada.