javascript - JSON (node/express) 和 JSON 数组中的自定义 "types"

标签 javascript c# json node.js schema

我最近不得不将一个使用 ASP.NET Core 1.0 完成大量工作的项目转换为 Node.js。我完全脱离了自己的舒适区,对 JavaScript 几乎一无所知,并且享受了 ASP 为我序列化 C# 类而不必自己处理 JSON 的美好生活。 Node 希望我自己做 JSON,但我对此感到很不舒服。

这是一款健身应用。您的客户在电梯等方面取得了一些进展。在 C# 中,它位于 Workouts 对象中,如下所示:

    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
    }]
});

最佳答案

如果您只想要一个可用于各种其他模型的通用数据结构,那么您可以创建 sub-doc schema (可能有也可能永远不会有自己的模型)将被各种其他模式使用。

注意:这提供了一个单例模式对象,这意味着如果您要修改一个模型,它将传播到以后使用它的任何其他模型。如果这是一个问题,那么您可以将 workout-list-schema.js 转换为工厂函数,每次都会返回一个新的架构对象。

workout-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
  }]
});

关于javascript - JSON (node/express) 和 JSON 数组中的自定义 "types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908738/

相关文章:

php - 在html中显示json

javascript - Bootstrap 中的切换按钮不想 "untoggle"

javascript - 在 Vue.js 中包含 bootstrap 抛出 jQuery not found 错误

c# - MVC : How do I create link on server side

c# - 如何获取IP地址?

java - 如何从ajax get()方法调用的spring Controller 以json格式返回列表对象

javascript - 将数据从组件传递到父组件

javascript - 如何通过远程json在客户端发送 "configure"javascript?

c# - 如何在进度条中显示文件上传进度 - Amazon S3 bucket

c# - C# 中的 Google map API 地址验证