我的架构如下:
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)
时,我得到了我的预期。请分享您的观点。
答案 0 :(得分:1)
找到解决方案。我们必须将minimize
选项设置为false,作为Schema
定义的一部分。文档说:mongoose minimize选项。我有它设置它false
。
所以我的架构变成了:
var MySchema = new mongoose.Schema({
userEmail: {
type: String,
trim: true
},
subscription: {}
}, {minimize: false});
这解决了我的问题。