Mongoose 验证错误:架构配置无效
Posted
技术标签:
【中文标题】Mongoose 验证错误:架构配置无效【英文标题】:Mongoose validation err: Invalid schema configuration 【发布时间】:2019-10-14 18:08:24 【问题描述】:尝试通过嵌入文档来建模集合之间的关系 但是在架构中进行验证并将“必需”设置为 True 时,出现错误
一旦我在电影模式中注释了所需的流派对象,问题就解决了 但我想要验证
const Movie = mongoose.model(
'Movies',
new mongoose.Schema(
title:
type: String,
required: true,
trim: true,
minlength: 1,
maxlength: 255
,
numberInStock:
type: Number,
required: true,
min: 0,
max: 255
,
dailyRentalRate:
type: Number,
required: true,
min: 0,
max: 255
,
genre: genreSchema
required: true
)
);
const genreSchema = new mongoose.Schema(
name:
type: String,
required: true,
minlength: 5,
maxlength: 50
);
TypeError:无效的架构配置:True
不是路径 required
处的有效类型
【问题讨论】:
required: true
看起来像一个字段,但这就是您收到无效架构配置错误的原因。
【参考方案1】:
删除required: true
并从官方docs 关注这个。注意使用的猫鼬版本。
我得到了同样的错误并解决了它。我的错误是使子文档成为模型而不是将其保留为模式
const childSchema = new Schema( name: 'string' );
const parentSchema = new Schema(
// Array of subdocuments
children: [childSchema],
// Single nested subdocuments. Caveat: single nested subdocs only work
// in mongoose >= 4.2.0
child: childSchema
);
【讨论】:
【参考方案2】:将流派模型导出为
exports.genreSchema = genreSchema
然后在movies.js
文件中导入模型为
import genreSchema from './genre.model'
尝试这样做不会出现错误。
【讨论】:
【参考方案3】:您可以使用 references 并在获取时使用 populate
genre: [
type: mongoose.Schema.Types.ObjectId,
ref: 'genreSchema',
required: true
],
参考:Model Referenced one to Many Relationship between documents 更好的架构设计
【讨论】:
@Omid 然后你应该写一个逻辑来验证它。我不认为您可以根据需要制作嵌入式文档。如果你去参考,那么它是可能的 我不认为它有效,但试试看genre: genreSchema: genreSchema, required: true
是的,我同意。您可以在获取时使用引用并使用填充【参考方案4】:
请分享完整代码。
可能主要原因是你没用过
const Movie = mongoose.model(
'Movies',
new mongoose.Schema(
title:
type: String,
required: true,
trim: true,
minlength: 1,
maxlength: 255
,
numberInStock:
type: Number,
required: true,
min: 0,
max: 255
,
dailyRentalRate:
type: Number,
required: true,
min: 0,
max: 255
,
genre:
ref: 'SchemaName',
required: true
,
)
);
你可以这样做。
【讨论】:
【参考方案5】:尝试在 true 旁边给出消息。 例如--> 必填:[true, "Title required"]
【讨论】:
以上是关于Mongoose 验证错误:架构配置无效的主要内容,如果未能解决你的问题,请参考以下文章
Mongo (+Mongoose) 错误:无法找到 $geoNear 查询的索引
在节点应用程序上使用 mongoose 的远程 mongo 身份验证问题