从mongoose中查找时重新排序数组字段

时间:2017-03-30 11:48:32

标签: javascript mongodb mongoose

请考虑以下代码:

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_idmedals

我想做什么

在致电medalsfind时重新排序findOne字段。

我不能做什么

  1. 重新排序setter函数中的medals字段
  2. 在保存到数据库之前重新排序medals字段
  3. 在致电medalsfind
  4. 后重新排序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] }

    原谅我可怜的英语。欢迎任何有助于改进我的问题描述的帮助!

0 个答案:

没有答案