You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Ian Mayo <ia...@planetmayo.com> on 2013/02/05 09:52:13 UTC

Using Json schema in validate function

I'm familiar with the use of a validate function in CouchDb, and have a
js-crafted one doing a good job right now.

But, I'm interested in moving to a higher-level validation, through use of
a json-schema:
http://json-schema.org/

I've only just become aware of the JSV validator, written in Javascript:
https://github.com/garycourt/JSV

Has anybody managed to use JSV in a CouchDb validate function?  Are there
any examples online?

Personally, I think there would be great merit in providing 'native' json
schema validation within CouchDb - it really seems a "grown-up" way of
maintaining the quality of a document database (accepting that there are
still many use cases that rely on a completely schema free design).

Cheers,
Ian

Re: Using Json schema in validate function

Posted by Travis Paul <Tr...@visPaul.me>.
Here's an example bare bones CouchApp using JSON schema validation:
https://github.com/TravisPaul/couchapp-schema

Take a look at the validate_doc_update.js and it should make sense. To test
it out push it CouchDB and try to create a new document in Futon, it will
give you error messages until it conforms to the schema. I included a
schema called "quiz" that might resemble a quiz document.

Hope that helps,


On Tue, Feb 5, 2013 at 10:04 AM, Travis Paul <Tr...@vispaul.me> wrote:

> I use JSV in my validation functions, though I had to modify JSV a bit to
> get it to cooperate.
> you also can't throw arrays from the validate doc update function so you
> have to work around that, see here:
> https://issues.apache.org/jira/browse/COUCHDB-1635
>
> I can't comment on performance since I'm not doing anything crazy, but it
> works.
>
> I'll try to put an example of what I'm doing on github after work and
> reply here.
>
>
> On Tue, Feb 5, 2013 at 4:20 AM, Dave Cottlehuber <dc...@jsonified.com>wrote:
>
>> On 5 February 2013 09:52, Ian Mayo <ia...@planetmayo.com> wrote:
>> > I'm familiar with the use of a validate function in CouchDb, and have a
>> > js-crafted one doing a good job right now.
>> >
>> > But, I'm interested in moving to a higher-level validation, through use
>> of
>> > a json-schema:
>> > http://json-schema.org/
>> >
>> > I've only just become aware of the JSV validator, written in Javascript:
>> > https://github.com/garycourt/JSV
>> >
>> > Has anybody managed to use JSV in a CouchDb validate function?  Are
>> there
>> > any examples online?
>> >
>> > Personally, I think there would be great merit in providing 'native'
>> json
>> > schema validation within CouchDb - it really seems a "grown-up" way of
>> > maintaining the quality of a document database (accepting that there are
>> > still many use cases that rely on a completely schema free design).
>> >
>> > Cheers,
>> > Ian
>>
>> Hi Ian,
>>
>> TL;DR this should not be difficult to do within a validation function,
>> *but* you might find performance takes a hit.
>>
>> I have some old links on this but don't recall anybody posting
>> anything concrete, and I found a way not to need it.
>>
>>
>> http://mail-archives.apache.org/mod_mbox/couchdb-user/201104.mbox/%3CBANLkTimqV0bbZrPY-12eSpL9yRGKWmau9g@mail.gmail.com%3E
>>
>> This person had a crack but never revealed any secret sauce:
>>
>> http://daemon.co.za/2012/05/dynamic-forms-json-schema/
>> http://daemon.co.za/2012/05/replacing-couchdb-views-with-elasticsearch/
>>
>> Simon might have more details to share:
>> https://cloudant.com/blog/schemas-in-couchdb/
>>
>> From a performance perspective you are likely to find this painful.
>>
>> https://github.com/k3nn7/json-validator
>>
>> Would likely work as an erlang validation function, with some work
>> required. But at least its mochiweb based already.
>>
>> A+
>> Dave
>>
>
>

Re: Using Json schema in validate function

Posted by Travis Paul <Tr...@visPaul.me>.
I use JSV in my validation functions, though I had to modify JSV a bit to
get it to cooperate.
you also can't throw arrays from the validate doc update function so you
have to work around that, see here:
https://issues.apache.org/jira/browse/COUCHDB-1635

I can't comment on performance since I'm not doing anything crazy, but it
works.

I'll try to put an example of what I'm doing on github after work and reply
here.


On Tue, Feb 5, 2013 at 4:20 AM, Dave Cottlehuber <dc...@jsonified.com> wrote:

> On 5 February 2013 09:52, Ian Mayo <ia...@planetmayo.com> wrote:
> > I'm familiar with the use of a validate function in CouchDb, and have a
> > js-crafted one doing a good job right now.
> >
> > But, I'm interested in moving to a higher-level validation, through use
> of
> > a json-schema:
> > http://json-schema.org/
> >
> > I've only just become aware of the JSV validator, written in Javascript:
> > https://github.com/garycourt/JSV
> >
> > Has anybody managed to use JSV in a CouchDb validate function?  Are there
> > any examples online?
> >
> > Personally, I think there would be great merit in providing 'native' json
> > schema validation within CouchDb - it really seems a "grown-up" way of
> > maintaining the quality of a document database (accepting that there are
> > still many use cases that rely on a completely schema free design).
> >
> > Cheers,
> > Ian
>
> Hi Ian,
>
> TL;DR this should not be difficult to do within a validation function,
> *but* you might find performance takes a hit.
>
> I have some old links on this but don't recall anybody posting
> anything concrete, and I found a way not to need it.
>
>
> http://mail-archives.apache.org/mod_mbox/couchdb-user/201104.mbox/%3CBANLkTimqV0bbZrPY-12eSpL9yRGKWmau9g@mail.gmail.com%3E
>
> This person had a crack but never revealed any secret sauce:
>
> http://daemon.co.za/2012/05/dynamic-forms-json-schema/
> http://daemon.co.za/2012/05/replacing-couchdb-views-with-elasticsearch/
>
> Simon might have more details to share:
> https://cloudant.com/blog/schemas-in-couchdb/
>
> From a performance perspective you are likely to find this painful.
>
> https://github.com/k3nn7/json-validator
>
> Would likely work as an erlang validation function, with some work
> required. But at least its mochiweb based already.
>
> A+
> Dave
>

Re: Using Json schema in validate function

Posted by Dave Cottlehuber <dc...@jsonified.com>.
On 5 February 2013 09:52, Ian Mayo <ia...@planetmayo.com> wrote:
> I'm familiar with the use of a validate function in CouchDb, and have a
> js-crafted one doing a good job right now.
>
> But, I'm interested in moving to a higher-level validation, through use of
> a json-schema:
> http://json-schema.org/
>
> I've only just become aware of the JSV validator, written in Javascript:
> https://github.com/garycourt/JSV
>
> Has anybody managed to use JSV in a CouchDb validate function?  Are there
> any examples online?
>
> Personally, I think there would be great merit in providing 'native' json
> schema validation within CouchDb - it really seems a "grown-up" way of
> maintaining the quality of a document database (accepting that there are
> still many use cases that rely on a completely schema free design).
>
> Cheers,
> Ian

Hi Ian,

TL;DR this should not be difficult to do within a validation function,
*but* you might find performance takes a hit.

I have some old links on this but don't recall anybody posting
anything concrete, and I found a way not to need it.

http://mail-archives.apache.org/mod_mbox/couchdb-user/201104.mbox/%3CBANLkTimqV0bbZrPY-12eSpL9yRGKWmau9g@mail.gmail.com%3E

This person had a crack but never revealed any secret sauce:

http://daemon.co.za/2012/05/dynamic-forms-json-schema/
http://daemon.co.za/2012/05/replacing-couchdb-views-with-elasticsearch/

Simon might have more details to share:
https://cloudant.com/blog/schemas-in-couchdb/

>From a performance perspective you are likely to find this painful.

https://github.com/k3nn7/json-validator

Would likely work as an erlang validation function, with some work
required. But at least its mochiweb based already.

A+
Dave