2015-03-24 12 views
5

Hullo, Ho un passaggio da tenere con Mongoose. C'è un modo di usare JSON-Shema con gli schemi Mongoose? Dire che voglio definire il mio schema di dati API usando uno standard come JSON-Schema, perché è bello. Sembra che ho bisogno di definirlo di nuovo quando voglio usare Mongoose/MongoDB! Questa è una brutta duplicazione che mi piace evitare. Idealmente, la modifica della definizione di JSON-Schema cambierebbe anche lo schema di MongoDB. Un problema simile si presenterebbe se usassi la libreria di validazione JOI.JS. Qualcuno ha trovato una soluzione a questo? O c'è un approccio alternativo?definire uno schema con JSON-Schema e usare Mongoose?

grazie

+1

Sono sicuro che è possibile prendere lo schema JSON e convertirlo automaticamente in uno schema di mangusta usando javascript. alla fine della giornata, sono solo oggetti una volta che li analizzi. –

+0

mentre questo è abbastanza giusto, mi stavo chiedendo se qualcuno ha fatto qualcosa del genere in passato e ha reso questo sforzo disponibile a tutti, poiché mi sembra un problema abbastanza ovvio per me. Ho ricercato gli strumenti e non sono riuscito a trovarne uno finora. – sebbulon

+1

https://www.npmjs.com/package/json-schema-converter –

risposta

5

Prova questa biblioteca: https://www.npmjs.com/package/json-schema-to-mongoose Ci sono altri là fuori troppo. Ho creato json-schema-to-mongoose poiché le altre librerie non si adattavano perfettamente alle mie esigenze.

Inoltre, mi piace generare il json-schema da TypeScript utilizzando Typson. Rende così il json-schema è più tipizzato in modo statico.

2

Chiming qui da quando ho incontrato anche questo problema e ho trovato una soluzione alternativa ai suggerimenti forniti.

Uno può utilizzare https://github.com/nijikokun/generate-schema per prendere un oggetto JS normale e convertirlo in entrambi Schema JSON e uno schema Mongoose. Trovo che questo strumento sia più facile nel caso di retrofitting del codice esistente con convalida e persistenza poiché probabilmente avrai già un oggetto di esempio con cui iniziare.

+0

grazie per il suggerimento, sembra molto utile – sebbulon