乐闻世界logo
搜索文章和话题

How to set a schema-field to be the ID using Mongoose?

4 个月前提问
3 个月前修改
浏览次数21

1个答案

1

在 Mongoose 中,如果想要将某个 schema 字段设置为 ID 类型,通常是指为这个字段设置一个 MongoDB 的 ObjectId 类型。ObjectId 是 MongoDB 的一个特殊数据类型,通常用来表示唯一的文档标识符(_id)。

在 Mongoose 中定义一个字段为 ObjectId 类型,可以使用 Schema.Types.ObjectId。这通常用于定义引用其他文档的字段。例如,如果我们有一个用户模型和一个帖子模型,并且我们想要在帖子模型中引用创建该帖子的用户,我们可以这样设置帖子模型中的用户字段:

javascript
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const postSchema = new Schema({ // ...其他字段 author: { type: Schema.Types.ObjectId, ref: 'User' // 这里指定这个 ObjectId 引用的是 User 模型 } // ...其他字段 }); const Post = mongoose.model('Post', postSchema);

在上面的例子中,author 字段被设置为一个 ObjectId 类型,通过 ref 属性指定了这个 ID 引用的是 User 模型的一个实例。

如果你是要设置一个字段作为主键(即文档的默认 _id 字段),则可以在定义 schema 时直接使用 ObjectId 类型,通常情况下这是自动完成的,你不需要显式指定,因为每个 Mongoose 模型默认都会有一个 _id 字段,类型为 ObjectId。

如果你要显式设置 _id 字段,则可以这样做:

javascript
const userSchema = new Schema({ _id: Schema.Types.ObjectId, // 显式定义 _id 字段为 ObjectId 类型 // ...其他字段 }); const User = mongoose.model('User', userSchema);

不过,通常不建议手动设置 _id 字段,除非你有特殊的需求,因为 MongoDB 默认会为每个新创建的文档自动生成一个唯一的 ObjectId。

2024年6月29日 12:07 回复

你的答案