2016-11-21 41 views
6

Eksperymentuję z użyciem Flowtype w aplikacji Meteor + React. Dodawanie typów do moich różnych funkcji i klas wydaje się działać dobrze, jednak bardzo chciałbym również sprawdzić dostęp do różnych kolekcji.Jak sprawdzić kolekcje Mongo w Meteor z Flowtype?

Pomysł polegałby na określeniu, że wszystkie pozycje w zbiorze "Książki" będą miały co najmniej pewne pola (zdefiniowane jako Tablica typu), najlepiej w celu weryfikacji tego przy każdym odczytaniu danych z Mongo (przynajmniej w opracowaniu), i wtedy byłoby wiedzieć, że jeśli zrobiłem

const a = Meteor.books.findOne(id) 

następnie a musiałby typu książki.

Obecnie uzyskuję dostęp do danych zarówno przez Meteor.createCollection, jak i Meteor.find(). Fetch() lub Meteor.findOne().

Pomysły są mile widziane!

Odpowiedz

1

Myślę, że nie byłoby to takie proste (na razie), ponieważ rdzeń Meteora powinien w jakiś sposób obsługiwać tę funkcję.

Tak więc Meteor.findOne() zwraca prosty obiekt JavaScript i Meteor.find().fetch() zwraca tablicę JavaScript. Może spróbujesz przykład z Flow | Objects docs:

type Book = { name: string, author: string, price: number }; const book = Meteor.books.findOne(id); //returns { name : 'Flowtype Handbook', author: 'renren89', price: 'free'} (book : Book);

Ale jak widać Meteor powinna zwrócić dane najpierw podczas uruchamiania aplikacji, aby uzyskać ten przykład rzeczywiście użyteczne.

Inną opcją jest użycie pakietów zewnętrznych do sprawdzania poprawności kolekcji względem schematu. Istnieją dwa pakiety zawodnika:

Może to rozwiązanie jest lepsze niż przy użyciu Flowtype