mongoose stringify删除空元素

时间:2014-03-18 15:48:13

标签: node.js mongodb mongoose

我正在使用我的mongo db中的空值来检索 mongoose 对象:

{ _id: 53049728456d4416243bf65f,
  userCreated: {},
  status: { userCreated: {} },
  user: 'patrice',
}

这很好,因为没有数据。

但当我使用 JSON.stringify(obj)进行字符串化时,我得到:

{ _id: 53049728456d4416243bf65f,
  user: 'patrice'
}

userCreated 状态尚未进行字符串化,并且未显示在我的输出中...

任何想法来自何处以及如何获得它?

我的模型是这样的:

new mongoose.Schema({
  user: type: String, default: '',
  status: {
    name: { type: String, default: '' },
    userCreated: {
      time: { type: Date, default: Date.now }
    }
  },
  userCreated: {
    time: { type: Date, default: Date.now }
  }
})

P上。

2 个答案:

答案 0 :(得分:2)

JSON.stringify通常不会删除空对象,因此这是特定的mongoose。

我建议尝试.toObject()或.toJSON()

http://mongoosejs.com/docs/api.html#document_Document-toObject

这个将在.stringify期间被调用,所以它可能正在切断空对象。 http://mongoosejs.com/docs/api.html#document_Document-toJSON

首先尝试一下:

JSON.stringify(obj.toObject());

答案 1 :(得分:2)

尝试在架构选项中将minimize设置为false。为我工作。

opts.minimize = false; //stop empty objects being turfed
var s = new Schema(f_obj, opts);