2016-04-19 85 views
1

我想为我刚刚构建的表单创建一个巨大的模式......据说我的模式顺序必须模仿表单顺序,还是可以按照我放入的任何顺序输入所有输入? 下面的例子。 它可以这样吗?Node.JS中的架构问题的顺序?

// 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); 

回答

2

没有我的架构才能有模仿形式的顺序,也可以只是在我把它们以任意顺序所有的投入?

mongoose.Schema接受JavaScript对象作为其参数。因此,您的问题归结为:

JavaScript对象是否意识到它们的键在其中定义的顺序?

答案是:不,在JavaScript对象中不维护按键顺序。 JS规范明确指出对象是无序的键/值集合。 (compare

因此,mongoose.Schema即使绑定也不能依赖键顺序,这意味着您可以自由地以任何您喜欢的方式对键进行排序。


我们还可以解决从另一端的问题:

是它可能像表单字段顺序前端的变化迫使我重写我的后端数据库的代码?

而答案是:不,这是不太可能的。我们甚至可以不考虑任何形式的规范就可以驳回这种思想,因为它没有任何意义。