MongoDB:输出 'id' 而不是 '_id'

标签 mongodb node.js mongoose

我正在使用 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 的行为。

见:

您可以将所有模型抽象为 BaseSchema,然后扩展/调用以将逻辑保存在一个位置。我在创建 Ember/Node/Mongoose 应用程序时编写了上述内容,因为 Ember 确实更喜欢使用“id”字段。

关于MongoDB:输出 'id' 而不是 '_id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034848/

相关文章:

node.js - 自动递增 id 收集 - Mongo

python - 类型错误 : object of type 'Cursor' has no len()

mongodb - 计算数组中相同值出现的次数

Mongodb 文本索引 - 更好的评分?

javascript - 如何检查运行 Web 应用程序的设备

node.js - Fluent FFMPEG 复杂过滤器将文件拆分为多个输出

node.js - MongoDB $lookup 结果作为对象而不是数组

git - 如何使用 NPM 处理 git 项目中的 Node.js 依赖项?

javascript - Mongoose,保存查找结果似乎什么也没做

javascript - Mongoose 按数组条目 ($in) 进行搜索的行为与 MongoDB Atlas 不一致