我使用带有express的nodeJs来创建一个Web应用程序,并使用mongoose在我的应用程序中创建模型。正如您在Javascript中所知,我们无法保证JS对象的排序。 现在,当我使用find()或findOne()方法来查询特定模型时,它返回一个JS对象,并且所有事情都很好,并且正如我所期望的那样。问题是我需要返回的JS对象具有我在相关的mongoose模型中定义的相同顺序。 考虑/models/user.js中的我的用户模型定义:
var mongoose = require('mongoose');
var user = mongoose.Schema({
local: {
email: String,
password: String
},
firstName: String,
lastName: String,
role: {
type: String,
enum: ['admin', 'customer', 'guest']
},
address: {
country: String,
state: String,
rest: String
},
phoneNumber: String,
isActive: Boolean,
registeredDate: String
});
现在,如果我使用find方法查找具有特定电子邮件地址(已存在于DB中)的用户,则返回正确的一个没有问题,但返回的对象没有上面js中定义的确切顺序mongoose模型(可以从JS对象中获得)。简而言之,我需要返回的对象如下所示(我的应用程序需要的内容):
{
local: {
email: 'someone@example.com',
password: '123dfgREW'
},
firstName: 'Rose',
lastName: 'Marent',
role: 'customer',
address: {
country: 'Brazil',
state: 'etc',
rest: 'etc'
},
phoneNumber: '+654987321',
isActive: true,
registeredDate: '2/19/2006'
}
但它就像下面(我得到的):
{
isActive: true,
role: 'customer',
address: {
state: 'etc',
country: 'Brazil',
rest: 'etc'
},
phoneNumber: '+654987321',
lastName: 'Marent',
registeredDate: '2/19/2006'
firstName: 'Rose',
local: {
email: 'someone@example.com',
password: '123dfgREW'
},
}
如何使用mongoose重新命令got对象的订单与该Model的定义Schema相同?