Comments (7)
Hey, can you provide the complete inputs (schema and data) and the outputs you got? I'm trying to piece things together to reproduce the issue, but I think I'm missing some of the parts. The full schema in your example seems to have a mix of symbol and string keys and is missing an opening %{
at least.
from ex_json_schema.
Ok that's the output of the resolved schema. All schema files are below.
Request schema:
https://amnesia.io/222de8695240d2e5fc222151dd4579d3358732ad522fd8a73c32062e42c58279
Table schema:
https://amnesia.io/7a4a8883634e21aa99d9e7e0dc41550b1a19c9f6c0dda166377e260aeb504d1e
Pairs schema:
https://amnesia.io/5f00cf0449e900d66ef786825025fe824d9e327747acc9cf2786183cafa707b5
Varchar Schema:
https://amnesia.io/dbecf85609449920fa82236da5c5b8b3eb31edb7f622ab39f19102780dc549ef
Integer:
https://amnesia.io/5afde27e2e86a7a04a6109029903852487849bb3407fdf1f84ac7c5dc0bd558a
Here is the data im sending:
{
"action": "create",
"body": {
"name": "ch_request2",
"parent": "request",
"schema": [
{
"name": "description",
"type": "varchar"
},
{
"name": "test",
"type": "integer"
}
]
}
}
Here the output of the request I'm sending: Its a postgrex error as it validates with "^integer$" pattern
{
"error": "type "integerasdasd" does not exist"
}
from ex_json_schema.
Its probably also worth noting that I tried also without factoring the common params and I get the same result.
Also if i change the param for varchar to test but that one validates against the pattern which is strange its almost like as if the oneOf is only checking the first key for a pattern. However, if you look at the parent schema oneOf is working correctly as I'm not using a pattern. So perhaps isolated to pattern ?
from ex_json_schema.
I think the problem is with your table schema. When your items
is a list of schemas, you're validating the items against the schema at that list position. That's tuple validation in JSON Schema terms: https://json-schema.org/understanding-json-schema/reference/array.html#tuple-validation. So with this schema:
"items": [
{
"type": "object",
"oneOf": [
{
"$ref": "lib/schemas/pairs.schema.json"
}
]
}
]
you're only validating the first item. If you want to validate all items with the same schema, you need this:
"items": {
"type": "object",
"oneOf": [
{
"$ref": "lib/schemas/pairs.schema.json"
}
]
}
from ex_json_schema.
Btw you also don't need a pattern for your types. You can use "const": "integer"
to match on a constant value.
from ex_json_schema.
amazing - thank you for your help with this and as I said I'm quite new to json schema and Elixir for that matter. So apologies if it kept you from more pressing issues. This lib is great and I look forward to the latest schema support.
from ex_json_schema.
Happy to help. The official page I linked to earlier is quite good at explaining features in depth, with examples and everything. And there are also editors around that might help with composing a schema and giving the right hints.
from ex_json_schema.
Related Issues (20)
- Map.take deprecation HOT 2
- Add contributors with merge rights HOT 1
- Warning messages when running with Elixir 1.9.1 & OTP 22 HOT 2
- Intent to implement: custom string validation HOT 1
- Changelog HOT 2
- IO.inspect in hex package HOT 2
- Examples on usage HOT 3
- Error on extra attributes? HOT 1
- Elixir 1.11 deprecations HOT 1
- Feature request: make enum, properties, propertyNames and additionalProperties (or the actual schema) available for custom errors HOT 4
- Support custom formats for non-string types HOT 5
- I cant see why I'm getting this error
- Any plans to support 2019 and 2020 ? HOT 6
- No support for dependentRequired HOT 2
- Make schema domain configurable HOT 1
- Error line number HOT 1
- Handling refs in a schema HOT 3
- Extending Vocabularies HOT 1
- How to validate a schema itself? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ex_json_schema.