[英]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.