Node.JS中的模式顺序是否重要

Does order of schema matter in Node.JS?

本文关键字:是否 顺序 模式 JS Node      更新时间:2023-09-26

我即将为刚刚构建的表单创建一个巨大的模式。。。话虽如此,我的模式顺序是否必须模仿表单顺序,或者它是否可以将所有输入按我放入的任何顺序排列?以下示例。会是这样吗?

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

我的模式顺序是否必须模仿表单顺序,或者它是否可以按照我放入的任何顺序提供所有输入?

mongoose.Schema接受一个JavaScript对象作为其参数。所以你的问题归结为:

JavaScript对象是否知道其键的定义顺序

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

因此,即使mongoose.Schema绑定到,它也不能依赖密钥顺序,这意味着您可以自由地以任何方式排序密钥。


我们也可以从另一端解决这个问题:

是否可能是像表单字段顺序这样的前端更改迫使我重写数据库后端代码

答案是:不,这是非常不可能的。我们甚至可以在不考虑任何规格的情况下打消这种想法,因为这没有任何意义。