簡體   English   中英

JSON(節點/表達式)和JSON數組中的自定義“類型”

[英]Custom “types” in JSON (node/express) and JSON arrays

最近,我不得不將一個使用ASP.NET Core 1.0完成許多工作的項目轉換為Node.js。 我絕對不在我的舒適范圍內,對JavaScript幾乎一無所知,並且擁有ASP序列化C#類的美好生活,而無需自己做JSON。 Node希望我自己做JSON,但我遇到了麻煩。

這是一個健身應用程序。 您的客戶有所進步,其中包括他們的升降機和其他東西。 在C#中,它位於“鍛煉”對象中,如下所示:

    public struct Progress
    {
        public Workout[] Workouts;
    }

鍛煉是一個可重復使用的對象,其中包含計時,設定,重復等所有好東西。 我可以在需要它的每個模式中重新編寫Workouts對象,但是必須有更好的方法嗎? 我讀了一些有關$schema$ref但是不熟悉如何使用它們,或者這是否是這些關鍵字的正確應用。

最后,我將如何定義此自定義Workout對象的數組?

到目前為止,這是我的JSON對象和client.js的內容。 進度位是我理想中想要實現的目標。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ClientSchema = new Schema({
    measurements: [{
        height: Number,
        weight: Number
    }],
    personal_information: [{
        birthday: Date,
        gender: String
    }],
    contact_information: [{
        phone: String,
        email: String
    }],
    progress: [{
        workouts: WorkoutList
    }]
});

如果您只希望可以在其他各種模型中使用的通用數據結構,則可以創建一個子文檔模式 (該模型可能具有也可能永遠沒有其自己的模型),該子文檔模式將被其他各種模式使用。

注意:這提供了一個單例模式對象,這意味着如果您要修改一個模型,它將被傳播到以后使用它的任何其他模型。 如果這是一個問題,則可以將workout-list-schema.js轉換為工廠函數,該函數每次都會返回一個新的架構對象。

training-list-schema.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var WorkoutListSchema = module.exports.WorkoutListSchema = new Schema({
  // some schema
});

client-schema.js

var mongoose = require('mongoose');
var WorkoutListSchema = require('./workout-list-schema').WorkoutListSchema;
var Schema = mongoose.Schema;

var ClientSchema = new Schema({
  measurements: [{
    height: Number,
    weight: Number
  }],
  personal_information: [{
    birthday: Date,
    gender: String
  }],
  contact_information: [{
    phone: String,
    email: String
  }],
  progress: [{
    workouts: WorkoutListSchema
  }]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM