Przejdź do treści

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ć

  1. 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().
  2. 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.
  3. 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.

Specyfikacje i referencje