【发布时间】:2016-11-10 19:07:14
【问题描述】:
我正在使用 Mongoose 查询我的数据,然后通过我的 express API 将其作为响应返回。我想防止 API 响应中出现空属性。有没有很好的方法可以通过 Mongoose 做到这一点?使用 express 和 Mongoose 的推荐方法是什么?
【问题讨论】:
标签: node.js mongodb express mongoose
我正在使用 Mongoose 查询我的数据,然后通过我的 express API 将其作为响应返回。我想防止 API 响应中出现空属性。有没有很好的方法可以通过 Mongoose 做到这一点?使用 express 和 Mongoose 的推荐方法是什么?
【问题讨论】:
标签: node.js mongodb express mongoose
您可以覆盖 toJSON mongoose 架构方法以从返回的 json 中删除属性。
@example
YourSchemaName.methods.toJSON = function() {
var obj = this.toObject();
if (obj.SOME_FIELD_NAME === null) delete obj.SOME_FIELD_NAME;
return obj;
}
这里的代码将删除您拥有的属性的每个 null 数据。
const removeEmpty = (obj) => {
Object.keys(obj).forEach(key =>
(obj[key] && typeof obj[key] === 'object') && removeEmpty(obj[key]) ||
(obj[key] === '' || obj[key] === null) && delete obj[key]
);
return obj;
};
来源:how-do-i-remove-all-null-and-empty-string-values-from-a-json-object
【讨论】:
new Schema(),比如新的CustomSchema(),即覆盖new Schema() 和toJSON()。如果你有时间,你可以看看mongoose plugins,如果你能用它来做的话,那就去看看吧。