انتقل إلى المحتوى

تحويل JSON إلى مخطط Mongoose — Numio

يستنتج تعريف مخطط Mongoose من مستند JSON نموذجي ويُخرجه بصيغة JSON. تحصل الحقول على String أو Number أو Boolean أو Date أو ObjectId أو Mixed؛ وتصبح الكائنات المتداخلة مسارات متداخلة ومصفوفات الكائنات مخططات مستندات فرعية.

كتابة مخطط لمجموعة MongoDB موجودة انطلاقًا من مستند منسوخ من Compass أو mongosh.

JSON

Mongoose Schema

متى تستخدمها

  • كتابة مخطط لمجموعة MongoDB موجودة انطلاقًا من مستند منسوخ من Compass أو mongosh.
  • بدء نموذج Node.js من حمولة API نموذجية تخطط لتخزينها.

طريقة الاستخدام

  1. الصق مستندًا بصيغة JSON صارمة، أو مصفوفة مستندات؛ واكتب قيم ObjectId والتواريخ كسلاسل نصية عادية بدلًا من ObjectId() أو ISODate().
  2. تحقق من الأنواع المستنتجة: تصبح سلاسل hex المكوّنة من 24 حرفًا ObjectId، وسلاسل ISO 8601 مثل 2024-05-01T08:00:00Z تصبح Date.
  3. انسخ الناتج إلى new mongoose.Schema({...}) وأضف خيارات required وdefault وindex وref بنفسك.

مستند 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 }
}

مخطط Mongoose (JSON)

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

التفاصيل والقيود

يُستنتج في المتصفح بمولّد الموقع الخاص؛ ولا يُرسل المستند إلى خادم.

لا تُعطى النوع Date إلا تواريخ ISO 8601 (2024-05-01، مع وقت وإزاحة اختياريًا)، لذا تبقى رموز مثل "A-1001" أو "12" من نوع String.

تصبح مصفوفات الكائنات مخطط مستند فرعي مبنيًا من كل العناصر، مثل "type": [{ "city": ... }]. وتصبح المصفوفات الفارغة Array وnull تصبح Mixed.

لا يمكن استنتاج الحقول الإلزامية والقيم الافتراضية والفهارس والمراجع (refs) من البيانات، والحقول الغائبة عن العيّنة تغيب عن المخطط أيضًا.

FAQ

هل يمكنني تحويل مصفوفة JSON من المستندات؟

نعم. تُدمج المستندات، فيظهر في المخطط كل حقل موجود في أي منها. والحقل الذي يختلف نوعه بين المستندات يصبح Mixed.

لماذا الأنواع بين علامتي تنصيص، مثل "String"؟

الناتج JSON، لذا أسماء الأنواع سلاسل نصية. في JavaScript يمكنك استخدام المُنشئات العامة String وNumber وBoolean وDate وكذلك Schema.Types.ObjectId وSchema.Types.Mixed.

كيف يُعامَل _id؟

مثل أي حقل آخر: سلسلة hex من 24 حرفًا تُعطى النوع ObjectId. احذف _id إذا أردت أن يضيفه Mongoose تلقائيًا.

المواصفات والمراجع