我是meanjs中的新手。現在我陷入瞭如何操縱使用貓鼬從MongoDB查詢的數據。這裏是我的情況:如何在exec回調中操作mongoose查詢結果
模型架構是這樣的:
var AdminUserSchema = new Schema({
firstName: {
type: String,
trim: true,
default: '',
validate: [validateLocalStrategyProperty, 'Please fill in your first name']
},
lastName: {
type: String,
trim: true,
default: '',
validate: [validateLocalStrategyProperty, 'Please fill in your last name']
},
displayName: {
type: String,
trim: true
},
email: {
type: String,
trim: true,
default: '',
validate: [validateLocalStrategyProperty, 'Please fill in your email'],
match: [/.+\@.+\..+/, 'Please fill a valid email address']
},
username: {
type: String,
unique: 'Username already exists',
required: 'Please fill in a username',
trim: true
},
password: {
type: String,
default: '',
validate: [validateLocalStrategyPassword, 'Password should be longer']
},
salt: {
type: String
},
provider: {
type: String,
required: 'Provider is required'
},
providerData: {},
additionalProvidersData: {},
roles: {
type: [{
type: String,
enum: ['user', 'admin']
}],
default: ['admin']
},
updated: {
type: Date
},
created: {
type: Date,
default: Date.now
},
/* For reset password */
resetPasswordToken: {
type: String
},
resetPasswordExpires: {
type: Date
},
enabled: {
type: Boolean,
default: true
}
});
當我試圖獲取數據,並與下面的代碼操作:
var AdminUser = mongoose.model('AdminUser');
AdminUser.find().exec(function(err, users) {
if(err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
users[1].password = undefined;
users[1].salt = undefined;
var created = moment(users[1].created).format('YYYY-MM-DD');
users[1].created = created;
console.log(created);
console.log(users[1].created);
console.log(users[1]);
}
});
結果顯示如下,它是行不通的。
2015年4月7日
星期二2015年4月7日12:00:00 GMT + 1200(NZST)
{
_id: 55233e0c488bd50b1eafe558,
salt: undefined,
displayName: 'testtest',
provider: 'local',
username: 'test',
__v: 0,
enabled: true,
created: TueApr07201512: 00: 00GMT+1200(NZST),
roles: [
'admin'
],
password: undefined,
email: '[email protected]',
lastName: 'test',
firstName: 'test'
}
我試圖與這樣來操縱: users[1]['created'] = created;
或使用設定功能: users[1].set('created', created);
都失敗。請舉手。
任何幫助,將不勝感激。
在這種情況下,我只想把它帶到前端,並顯示創建的日期,如「2015-04-07」,而不是像「Tue Apr 07 2015 12:00:00 GMT + 1200(NZST)」 。但是這個問題的目的是如何處理從mongodb獲得的數據,如console.log中所示,數據用戶[1] .created不能以我的方式更改。 – ailionx
得到了答案從http://stackoverflow.com/questions/15670792/is-mongoose-query-result-read-only?rq=1,使用toObject()獲得一個可寫副本或使用精益(真)(真是默認即使沒有真),使查詢的結果是一個普通的json對象,而不是貓鼬文檔。我使用lean()來修復這種情況,但是,嘗試了兩種方法,兩種都可以使用 – ailionx