Konwerter JSON na schemat Mongoose — Numio
Wyprowadza definicję schematu Mongoose z przykładowego dokumentu JSON i zwraca ją jako JSON. Pola otrzymują String, Number, Boolean, Date, ObjectId lub Mixed; zagnieżdżone obiekty stają się zagnieżdżonymi ścieżkami, a tablice obiektów schematami poddokumentów.
Napisanie schematu dla istniejącej kolekcji MongoDB z dokumentu skopiowanego z Compass lub mongosh.
JSON
Mongoose Schema
Kiedy go używać
- Napisanie schematu dla istniejącej kolekcji MongoDB z dokumentu skopiowanego z Compass lub mongosh.
- Uruchamianie modelu Node.js z przykładowego ładunku API, który planujesz przechowywać.
Jak używać
- Wklej dokument jako ścisły JSON lub tablicę dokumentów; zapisuj ObjectIds i daty jako zwykłe ciągi znaków, a nie ObjectId() lub ISODate().
- Sprawdź wywnioskowane typy: 24-znakowe ciągi szesnastkowe stają się ObjectId, a ciągi ISO 8601, takie jak 2024-05-01T08:00:00Z stają się Date.
- Skopiuj wynik do nowego mongoose.Schema({...}) i samodzielnie dodaj wymagane, domyślne, indeksowe i ref opcje.
Dokument JSON
{
"_id": "64f1c2a9e1b2c3d4e5f60718",
"name": "Ada Lovelace",
"code": "A-1001",
"joinedAt": "2024-05-01T08:00:00Z",
"roles": ["admin", "editor"],
"addresses": [
{ "city": "London", "zip": "NW1" },
{ "city": "Paris", "zip": "75001", "primary": true }
],
"profile": { "bio": "Mathematician", "website": null }
}Schemat mangusty (JSON)
{
"_id": {
"type": "ObjectId"
},
"name": {
"type": "String"
},
"code": {
"type": "String"
},
"joinedAt": {
"type": "Date"
},
"roles": {
"type": [
"String"
]
},
"addresses": {
"type": [
{
"city": {
"type": "String"
},
…Szczegóły i ograniczenia
Wywnioskowane w przeglądarce przez własny generator witryny; dokument nie jest wysyłany na serwer.
Tylko daty ISO 8601 (2024-05-01, opcjonalnie z czasem i przesunięciem) otrzymują typ Date, dlatego kody takie jak "A-1001" lub "12" pozostają String.
Tablice obiektów stają się schematem poddokumentu utworzonym ze wszystkich elementów, np. "type": [{ "city": ... }]. Puste tablice stają się Array, a null staje się Mixed.
Wymaganych pól, wartości domyślnych, indeksów i referencji nie można wywnioskować z danych, a w schemacie brakuje pól, których nie ma w próbce.
FAQ
Czy mogę przekonwertować tablicę dokumentów JSON?
Tak. Dokumenty są scalane, zatem każde pole pojawiające się w którymkolwiek z nich znajduje się w schemacie. Pole wpisane inaczej w różnych dokumentach staje się mieszane.
Dlaczego cytowane są typy, np. „String”?
Dane wyjściowe to JSON, więc nazwy typów są ciągami znaków. W JavaScript możesz używać konstruktorów globalnych String, Number, Boolean i Date oraz Schema.Types.ObjectId i Schema.Types.Mixed.
Jak obsługiwany jest _id?
Jak każde inne pole: 24-znakowy ciąg szesnastkowy jest wpisywany jako ObjectId. Usuń _id, jeśli chcesz, aby Mongoose dodał go automatycznie.