Expressjs:res.json删除mongoose结果

时间:2015-11-30 13:56:44

标签: node.js mongodb express mongoose

我的架构如下:

var MySchema = new mongoose.Schema({
    userEmail: {
        type: String,
        trim: true
    },
    subscription: {}
});

我有这样的文件:

{
    "_id" : ObjectId("565c16d3951a55934acaca75"),
    "userEmail" : "abc@example.com",
    "subscription" : {
        "project1" : {
            "subproject1" : [ 
                "comp1"
            ]
        },
        "project2" : {}
    }
}

使用mongoose,如果我试试这个:

router.post('/getApi', function(req, res, next) {
    MyModel.findOne(
        {
            userEmail: "abc@example.com"
        }, function(err, data) {
            if (err) return next(err);
            res.json(data);
        }
    );
});

我的输出为:

{
    "_id" : ObjectId("565c16d3951a55934acaca75"),
    "userEmail" : "abc@example.com",
    "subscription" : {
        "project1" : {
            "subproject1" : [ 
                "comp1"
            ]
        }
    }
}

project2已删除,因为它有空文档。如果我尝试使用mongo控制台,我不会遇到这个问题。

我怀疑res.json()方法存在问题。因为当console.log(data)时,我得到了我的预期。请分享您的观点。

1 个答案:

答案 0 :(得分:1)

找到解决方案。我们必须将minimize选项设置为false,作为Schema定义的一部分。文档说:mongoose minimize选项。我有它设置它false

所以我的架构变成了:

var MySchema = new mongoose.Schema({
    userEmail: {
        type: String,
        trim: true
    },
    subscription: {}
}, {minimize: false});

这解决了我的问题。