2016-04-19 3 views
1

Ich bin im Begriff, ein riesiges Schema für eine Form zu machen, die ich gerade gebaut habe ... dass meine Schemaordnung die Formordnung nachahmen muss, oder kann sie alle Eingänge in irgendeiner Reihenfolge gerade haben, die ich sie einfüge? Beispiel unten. kann es so sein?Funktioniert die Reihenfolge des Schemas in 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); 

Oder muss es so sein?

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

Antwort

2

hat mein Schema, um die Form, um nachahmen müssen, oder es kann nur die Eingänge alle in beliebiger Reihenfolge habe ich sie in setzen?

mongoose.Schema akzeptiert ein JavaScript-Objekt als Parameter. Ihre Frage läuft also auf:

Sind JavaScript-Objekte der Reihenfolge ihrer Schlüssel bewusst?

Die Antwort darauf lautet: Nein, die Schlüsselreihenfolge wird in JavaScript-Objekten nicht beibehalten. Die JS-Spezifikation besagt explizit, dass Objekte nicht geordnete Schlüssel/Wert-Sammlungen sind. (compare)

Daraus folgt, dass mongoose.Schema kann nicht auf Schlüssel Reihenfolge verlassen, auch wenn es gebunden ist, was bedeutet, dass Sie frei sind, die Schlüssel in beliebiger Weise zu bestellen.


Wir auch die Frage vom anderen Ende angehen können:

Ist es wahrscheinlich, dass eine Änderung Front-End wie Formularfeld, um mich zwingt, meine Datenbank-Backend-Code neu zu schreiben?

Und die Antwort darauf ist: Nein, das ist ziemlich verdammt unwahrscheinlich. Wir können diesen Gedanken ablehnen, ohne überhaupt auf irgendeine Art von Spezifikationen einzugehen, weil das keinen Sinn ergeben würde.