Git Product home page Git Product logo

Comments (7)

natesilva avatar natesilva commented on September 26, 2024

@pvorb I can’t duplicate this problem. First, are you sure the $ref is correct?

In the sample above the host name is [a real host name] but you mentioned that the schema hostname was example.org. Maybe you just forgot to obscure the hostname in the sample code above? Or maybe it’s wrong in the schema.

Here’s the test code I used, and it worked:

var JaySchema = require('jayschema')
  ;

var addressSchema = {
  "id": "https://example.org/api/address.schema.json",
  "type": "string"
};

var masterSchema = {
  "title": "user",
  "id": "https://example.org/api/user.schema.json",
  "properties": {
    "addresses": {
      "type": "array",
      "items": {
        "$ref": "https://example.org/api/address.schema.json"
      }
    }
  }
};

var data = {
  "addresses": [
    "address1",
    "address2",
    "address3"
  ]
};

var js = new JaySchema();
console.log(js.register(addressSchema));      // prints []
console.log(js.validate(data, masterSchema)); // prints []

from jayschema.

natesilva avatar natesilva commented on September 26, 2024

Paul,

I’ve found that the getMissingSchemas() method was incorrectly reporting some schemas as missing. Still, validation would have been successful. This wasn’t exactly the problem you reported, but maybe it was related. That bug has been fixed as of 0.1.3.

Regards,
Nate

from jayschema.

pvorb avatar pvorb commented on September 26, 2024

Thank you. It doesn't solve my problem, so there must still be some problem hidden in my implementation. I'll have a in-depth look on it.

Maybe you just forgot to obscure the hostname in the sample code above?

Exactly. :-) I updated the question. Can you please replace the domain in the answer above, since it shouldn't become public yet?

from jayschema.

pvorb avatar pvorb commented on September 26, 2024

It works with version 0.1.3 when I'm using getMissingSchemas() instead of the result of js.register(schema). Maybe you should test the following:

var js = new JaySchema();
console.log(js.register(addressSchema));      // prints []
console.log(js.register(masterSchema));       // prints [ 'https://example.org/api/address.schema.json' ]
console.log(js.validate(data, masterSchema)); // prints []

I think the second log should print [] too.

from jayschema.

natesilva avatar natesilva commented on September 26, 2024

Sorry about that. It’s fixed in 0.1.4.

I went through the registry code and centralized the logic when checking for missing schemas, and made sure all checks use normalized ids. Added tests for this.

from jayschema.

pvorb avatar pvorb commented on September 26, 2024

Great, thanks. BTW: This may be interesting for you.

from jayschema.

natesilva avatar natesilva commented on September 26, 2024

Thanks for the pointer. Personally I thought validate(schema, data) made more sense, but I specifically chose validate(data, schema) to be compatible with other validators. Hopefully that will be helpful to you and others.

from jayschema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.