我即将为我刚刚构建的表单制作一个巨大的架构......据说我的架构顺序必须模仿表单顺序,或者它可以按照我将它们放入的任何顺序包含所有输入? 以下示例。 可以这样吗?
// link to mongoose
var mongoose = require('mongoose');
// define the article schema
var mapSchema = new mongoose.Schema({
created: {
type: Date,
default: Date.now
},
dd1: {
type: String,
default: ''
},
dd2: {
type: String,
default: ''
},
com1: {
type: String,
default: ''
},
com2: {
type: String,
default: ''
}
});
// make it public
module.exports = mongoose.model('Map', mapSchema);
或者它必须是这样的吗?
// link to mongoose
var mongoose = require('mongoose');
// define the article schema
var mapSchema = new mongoose.Schema({
created: {
type: Date,
default: Date.now
},
dd1: {
type: String,
default: ''
},
com1: {
type: String,
default: ''
},
dd2: {
type: String,
default: ''
},
com2: {
type: String,
default: ''
}
});
// make it public
module.exports = mongoose.model('Map', mapSchema);
答案 0 :(得分:3)
我的架构顺序是否必须模仿表单顺序,或者它是否可以按照我将它们放入的任何顺序包含所有输入?
mongoose.Schema
接受JavaScript对象作为其参数。所以你的问题归结为:
JavaScript对象是否了解其键定义的顺序?
答案是:不,在JavaScript对象中不维护键顺序。 JS规范明确声明对象是无序的键/值集合。 (compare)
因此,即使绑定了mongoose.Schema
,{"succes": true, "content": {"nrofpieces": 16, "size": {"width": 1096, "height": 961}, "directoryname": "Mako", "extension": "jpeg"}}
也无法依赖关键顺序,这意味着您可以以任何方式自由订购密钥。
我们也可以从另一端解决这个问题:
像表单字段顺序这样的前端更改是否可能会强制我重写我的数据库后端代码?
答案就是:不,这很不可能。我们甚至可以在不考虑任何规范的情况下忽略这个想法,因为它没有任何意义。