我正在使用 Mongoose ( Node ),输出id而不是_id的最佳方法是什么?
最佳答案
鉴于您使用的是 Mongoose,您可以使用“虚拟”,它们本质上是 Mongoose 创建的假字段。它们不存储在数据库中,只是在运行时填充:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
任何时候在你从这个模式创建的模型上调用 toJSON 时,它都会包含一个与 Mongo 生成的 _id 字段匹配的“id”字段。同样,您可以以相同的方式设置 toObject 的行为。
见:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
您可以将所有模型抽象为 BaseSchema,然后扩展/调用以将逻辑保存在一个位置。我在创建 Ember/Node/Mongoose 应用程序时编写了上述内容,因为 Ember 确实更喜欢使用“id”字段。
关于MongoDB:输出 'id' 而不是 '_id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034848/