2015-03-24 14 views
5

Hullo, Mam sedno do noszenia z mangustą. Czy istnieje sposób używania JSON-Shema z Schematami mangusty? Powiedz, że chcę zdefiniować mój schemat danych API przy użyciu standardu takiego jak JSON-Schema, ponieważ jest ładny. Wygląda na to, że muszę go zdefiniować ponownie, gdy chcę używać Mongoose/MongoDB! To dość brzydka duplikacja, którą lubię unikać. Idealnie, zmiana definicji JSON-Schema również zmieniłaby schemat MongoDB. Podobny problem pojawiłby się, gdybym użył biblioteki sprawdzania poprawności JOI.JS. Czy ktoś znalazł rozwiązanie tego problemu? A może jest alternatywne podejście?zdefiniować schemat z JSON-Schema i użyć Mongoose?

dzięki

+1

Jestem pewien, że można wziąć twój json-schema i automatycznie przekonwertować go do schematu mongoose za pomocą javascript. na koniec dnia, są po prostu obiektami, kiedy je parsujesz. –

+0

kiedy to jest w porządku, zastanawiałem się, czy ktoś zrobił coś takiego w przeszłości i sprawił, że ten wysiłek był dostępny dla wszystkich, ponieważ wydaje się dla mnie dość oczywistym problemem. Zbadałem narzędzia i nie mogłem ich znaleźć. – sebbulon

+1

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

Odpowiedz

5

Spróbuj tej biblioteki: https://www.npmjs.com/package/json-schema-to-mongoose Są inni, tam też. Stworzyłem json-schema-to-mongoose, ponieważ inne biblioteki nie pasowały do ​​moich potrzeb.

Ponadto, chcę wygenerować json-schema z TypeScript przy użyciu Typson. To sprawia, że ​​json-schema jest bardziej statycznie wpisany.

2

Chiming tutaj, ponieważ również natknąłem się na ten problem i znalazłem rozwiązanie alternatywne do przedstawionych sugestii.

Można użyć https://github.com/nijikokun/generate-schema, aby wziąć zwykły obiekt JS i przekonwertować go zarówno do schematu JSON, jak i schematu Mongoose. Uważam, że to narzędzie jest łatwiejsze w przypadku modernizacji istniejącego kodu z walidacją i trwałością, ponieważ prawdopodobnie będziesz miał już obiekt przykładowy.

+0

dzięki za podpowiedź, wygląda to bardzo przydatne – sebbulon