请考虑以下代码:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/db');
const User = new Schema({
user_id: { type: Number },
medals: {
type: [Number],
get: (medals) => {
return medals.slice().sort();
}
}
});
const UserModel = mongoose.model('User', User);
const record = new UserModel();
record.medals = [1, 3, 2];
record.user_id = 666;
record.save(function(err) {
UserModel.findOne({ user_id: 666 }, function(err, user) {
console.log(user.medals)
// user.medals: [1, 2, 3]
console.log(user);
// user: { user_id: 666, medals: [1, 3, 2] }
});
});
我使用两个字段定义User
架构:user_id
和medals
。
在致电medals
或find
时重新排序findOne
字段。
medals
字段medals
字段medals
或find
findOne
字段
醇>
我从medals
字段定义了一个getter方法。在getter函数中,我对medals
数组进行排序并返回已排序的数组。
在上面的代码片段中,我将奖牌为[1, 3, 2]
的用户保存到数据库中。
当我打印user.medals
时,它是[1, 2, 3]
。它已分类。这是对的。
但是当我打印user
对象时,它的medals
是[1, 3, 2]
,它是未分类的。
如何重新排序medals
字段,以便在我打印user
时,它的值为{ user_id: 666, medals: [1, 2, 3] }
?
原谅我可怜的英语。欢迎任何有助于改进我的问题描述的帮助!