Comments (5)
There's of course something very wrong going on in there - I'll look for a fix and let you know.
from z-schema.
@bzuillsmith can you give me a test-case with a schema you're testing against? Seems like inner properties of ObjectID() are being validated with your schema and that's causing the delay but I can't say for sure until I see the schema.
from z-schema.
Below is an example test based on a subset of one of our use cases. Usually we add format: 'object-id
that checks it's an instance of ObjectID but seems to make no difference to the problem.
On my machine, async validation takes 232ms and sync takes 200ms.
var ObjectID = require('mongodb').ObjectID;
var ZSchema = require('z-schema');
describe('z-schema', function() {
var schema = {
type: 'array',
items: {
type: 'object',
properties: {
'note': { type: 'string', maxLength: 2048 },
// 'created': { type: 'object', format: 'date-object' },
'createdBy': { type: 'string', maxLength: 100 },
'_id': { type: 'object' }
},
additionalProperties: false,
},
additionalItems: false,
};
var notes = [];
before(function() {
var num = 5, i;
for(i = 0; i < num; i++) {
notes.push({
_id: new ObjectID(),
note: 'Here is my note',
createdBy: '[email protected]',
});
}
return notes;
});
it('should be fast', function(done) {
var validator = new ZSchema({ async: true, noTypeless: true, noExtraKeywords: true, noZeroLengthStrings: true, forceAdditional: true});
validator.validate(notes, schema, done);
});
});
from z-schema.
@bzuillsmith here's the testcase I put together: ac4ed8c
I didn't notice any major difference with using ObjectID against using simple object. Btw on my computer validation over 10000 objects (I increased from your original five) took about 250ms in sync mode and 400ms in async mode.
Can you please try to run the testcase on your machine? Just clone the repo and do
npm install
npm install -g mocha
mocha --grep "issue/39"
from z-schema.
Confirmed solved in ac4ed8c#commitcomment-6674756
from z-schema.
Related Issues (20)
- add keyword in error objects of getLastErrors()
- Allow to specify errors to be reported
- why when schema type is string, there is no error when the value type is integer or number ? HOT 2
- Update to core-js 3.x
- Doesn't validate minimum and maximum on numbers HOT 1
- Versions mismatch cause npm error HOT 4
- Remove core-js HOT 2
- Missing type for Validator.validate(json, schema, options) HOT 3
- 'email' format accepts email addresses with several types of whitespace. HOT 3
- 'ARRAY_ADDITIONAL_ITEMS' error unreachable?
- Is there any approach to suppress an error code HOT 2
- Local schemas not being retrieved from cache
- zSchema doesn't support json-schema post 2020-12
- Vulnerabilities introduced by package validator HOT 2
- Vulnerability in Validator JS HOT 1
- Update Validator to 13.7.0 HOT 1
- `lastReport` absent in `index.d.ts` HOT 2
- Update commander as it's version marked as EOL
- Support for Unicode Properties
- List on json-schema.org HOT 1
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 z-schema.