Naar de inhoud

JSON naar Mongoose-schematransformator — Numio

Leidt een Mongoose-schemadefinitie af uit een voorbeeld van een JSON-document en voert dit uit als JSON. Velden krijgen String, Number, Boolean, Date, ObjectId of Mixed; geneste objecten worden geneste paden en arrays van subdocumentschema's van objecten.

Een schema schrijven voor een bestaande MongoDB-collectie vanuit een document gekopieerd uit Compass of Mongosh.

JSON

Mongoose Schema

Wanneer gebruik je dit?

  • Een schema schrijven voor een bestaande MongoDB-collectie vanuit een document gekopieerd uit Compass of Mongosh.
  • Een Node.js-model starten op basis van een voorbeeld van de API-payload die u wilt opslaan.

Hoe werkt het

  1. Plak een document als strikt JSON, of een reeks documenten; schrijf ObjectIds en datums als gewone tekenreeksen in plaats van ObjectId() of ISODate().
  2. Controleer de afgeleide typen: hexadecimale tekenreeksen van 24 tekens worden ObjectId en ISO 8601-tekenreeksen zoals 2024-05-01T08:00:00Z worden Datum.
  3. Kopieer het resultaat naar new mongoose.Schema({...}) en voeg zelf de vereiste, standaard-, index- en ref-opties toe.

JSON-document

{
  "_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 }
}

Mongoose-schema (JSON)

{
  "_id": {
    "type": "ObjectId"
  },
  "name": {
    "type": "String"
  },
  "code": {
    "type": "String"
  },
  "joinedAt": {
    "type": "Date"
  },
  "roles": {
    "type": [
      "String"
    ]
  },
  "addresses": {
    "type": [
      {
        "city": {
          "type": "String"
        },
…

Details en beperkingen

Afgeleid in de browser door de eigen generator van de site; het document wordt niet naar een server verzonden.

Alleen ISO 8601-datums (01-05-2024, optioneel met een tijd en offset) zijn getypt als Datum, dus codes zoals "A-1001" of "12" blijven String.

Arrays met objecten worden een subdocumentschema dat is opgebouwd uit alle items, zoals "type": [{ "city": ... }]. Lege arrays worden Array en null wordt Mixed.

Vereiste velden, standaardwaarden, indexen en referenties kunnen niet uit de gegevens worden afgeleid, en velden die in uw voorbeeld ontbreken, ontbreken in het schema.

FAQ

Kan ik een JSON-reeks documenten converteren?

Ja. De documenten zijn samengevoegd, zodat elk veld dat in een van de documenten voorkomt, in het schema staat. Een veld dat in verschillende documenten verschillend wordt getypt, wordt Gemengd.

Waarom worden de typen tussen aanhalingstekens geplaatst, zoals 'String'?

De uitvoer is JSON, dus typenamen zijn tekenreeksen. In JavaScript kunt u de globale constructors String, Number, Boolean en Date en Schema.Types.ObjectId en Schema.Types.Mixed gebruiken.

Hoe wordt _id afgehandeld?

Net als elk ander veld: een hexadecimale tekenreeks van 24 tekens wordt getypt als ObjectId. Verwijder _id als je wilt dat Mongoose deze automatisch toevoegt.

Specificaties en referenties