monggose嵌套对象中添加ObjectId

如何在 Mongoose 的定义中,定义一个包含 ObjectId 的嵌套定义呢?

正确的定义方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 嵌套定义
const nestedSchema = new Schema({
fileTypeId: mongoose.Types.ObjectId,
type: String,
// 代表不生成_id项,否则会在对象中生成额外的_id字段
_id: false
})

// 定义
const UserSchema = new Schema({
name: {
type: String,
required: true
},

nestedData: {
// 类型为
type: nestedSchema
}
})

错误的定义:

1
2
3
4
5
6
7
8
9
10
11
const UserSchema = new Schema({
name: {
type: String,
required: true
},

extra: {
fileTypeId: mongoose.Types.ObjectId,
type: String,
}
})

这种定义如果传入的 fileTypeId 是一个字符串的话,不会自动转成 ObjectId,会使得 Mongoose 报错。