W poprzednich wersjach Mongoose (dla node.js) istniała możliwość korzystania z niego bez definiowania schematu
var collection = mongoose.noSchema(db, "User");
Jednak w obecnej wersji funkcja „noSchema” została usunięta. Moje schematy mogą się często zmieniać i naprawdę nie pasują do zdefiniowanego schematu, więc czy istnieje nowy sposób korzystania z modeli bez schematu w Mongoose?
Odpowiedzi:
Myślę, że właśnie tego szukasz w przypadku Mongoose Strict
opcja: ścisła
Opcja ścisła (domyślnie włączona) zapewnia, że wartości dodane do instancji naszego modelu, które nie zostały określone w naszym schemacie, nie zostaną zapisane w bazie danych.
Uwaga: nie ustawiaj na fałsz, chyba że masz dobry powód.
źródło
thing.set(key, value)
ponieważthing.key=value
nie działa z tą metodą, tj. W przeciwnym razie nie zostanie zmieniona w bazie danych.MySQL
:) I myślę, że sugestia Jonathana / zgodnie z dokumentami Mongoose API Uwaga: Nie ustawiaj na fałsz, chyba że masz dobry powód . Jest absolutnie w porządku z obecnym kontekstem (tylko oNO-SQL
)W rzeczywistości
Schema.Types.Mixed
tryb „mieszany” ( ) wydaje się robić dokładnie to samo w Mongoose ...akceptuje pozbawiony schematu , dowolny obiekt JS - więc cokolwiek możesz na to rzucić. Wygląda na to, że musisz później ręcznie uruchomić zapisywanie tego obiektu, ale wydaje się, że jest to uczciwy kompromis.
źródło
any
polem, więc w rzeczywistości ma schemat. Lepszą odpowiedzią na PO jest użycie,strict: false
jak mówi ta odpowiedź.Hej Chris, spójrz na Mongousa . Miałem ten sam problem z mangustą, ponieważ moje schematy zmieniają się niezwykle często w trakcie opracowywania. Mongous pozwolił mi mieć prostotę Mongoose, jednocześnie mogąc swobodnie definiować i zmieniać moje „schematy”. Zdecydowałem się po prostu zbudować standardowe obiekty JavaScript i przechowywać je w bazie danych w ten sposób
O wiele prostsze niż Mongoose, chociaż wierzę, że przegapisz kilka fajnych rzeczy, takich jak „pre”. Nie potrzebowałem tego jednak. Mam nadzieję że to pomoże!!!
źródło
Oto szczegółowy opis: [ https://www.meanstack.site/2020/01/save-data-to-mongodb-without-defining.html][1]
źródło
To już nie jest możliwe.
Możesz używać Mongoose z kolekcjami, które mają schemat i sterownik węzła lub inny moduł mongo dla tych bez schematów.
https://groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ
źródło