2016-04-19 22 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即使綁定也不能依賴鍵順序,這意味着您可以自由地以任何您喜歡的方式對鍵進行排序。


我們還可以解決從另一端的問題:

是它可能像表單字段順序前端的變化迫使我重寫我的後端數據庫的代碼?

而答案是:不,這是不太可能的。我們甚至可以不考慮任何形式的規範就可以駁回這種思想,因爲它沒有任何意義。