You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose定义嵌套对象时出错,请求技术协助

Mongoose嵌套对象Schema定义错误解决方法

你当前的问题核心是在嵌套Schema时错误传入了Mongoose模型(Model)而非Schema对象,同时代码里存在字段验证规则的拼写错误,以下是修正后的完整代码:

1. 修正用户模型文件(model.UserModel.js)

需要同时导出Schema和Model,供其他Schema嵌套使用:

const mongoose = require("mongoose")

const RegisterSchema = mongoose.Schema({
    _id: {
        type: Number,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    username: String,
    phone: Number,
    role: String,
    active: Boolean
})

const RegisterModel = mongoose.model("register", RegisterSchema)
// 同时导出Schema和Model
module.exports = { RegisterModel, RegisterSchema }

2. 修正点赞模型文件(models.like.js)

导入用户Schema而非Model,修正require拼写错误为required:

const mongoose = require("mongoose")
// 导入用户Schema
const { RegisterSchema } = require("../models/model.UserModel")

const likeSchema = mongoose.Schema({
    _id: {
        type: Number,
        required: true // 修正拼写错误
    },
    noOfLikes: {
        type: Number,
    },
    // 使用用户Schema作为嵌套类型
    likeduser: RegisterSchema
})

const LikesModel = mongoose.model("Like", likeSchema)
// 同时导出Schema和Model
module.exports = { LikesModel, likeSchema }

3. 修正电影模型文件(models.movies.js)

导入点赞Schema而非Model,修正require拼写错误:

const mongoose = require("mongoose")
// 导入点赞Schema
const { likeSchema } = require("./models.like")

const moviesSchema = mongoose.Schema({
    _id: {
        type: Number,
        required: true // 修正拼写错误
    },
    movieName: String,
    movieUrl: String,
    moviePosterUrl: String,
    movieCast: [String],
    // 使用点赞Schema的数组作为嵌套类型
    like: [likeSchema]
})

const MovieModel = mongoose.model("Movie", moviesSchema)
module.exports = MovieModel

关键说明

  • Mongoose的Schema字段类型仅支持内置类型(String/Number等)、Schema对象、或它们的数组,不能直接传入mongoose.model()编译后的模型实例。
  • 原代码中require:true是拼写错误,正确的验证规则是required:true,这也会导致Mongoose抛出验证错误。

内容的提问来源于stack exchange,提问作者Ironman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:23:14