【问题标题】:throw new TypeError(`Invalid schema configuration: \`${name}\` is not ` +throw new TypeError(`无效的模式配置:\`${name}\` is not ` +
【发布时间】:2020-09-02 04:43:52
【问题描述】:

我编写了以下架构。但是在运行时它给了我一个错误—— throw new TypeError(Invalid schema configuration: \${name}` is not ` + --- 有人可以帮我为什么会出现这个错误吗?下面显示的是我的架构,有人能弄清楚如果我的架构有一些错误。

    $
jsonSchema: {
                bsonType: "object",
                properties: {

                    name: {
                        bsonType: "string",
                        description: "must be a string"
                    },
                    teacherId: {
                        bsonType: "objectId",
                        description: "must be a Object ID"
                    }
                }    
            }

【问题讨论】:

  • 如果你使用猫鼬,你应该使用defining a schema的猫鼬语法。目前您正在使用本机 mongodb 语法
  • 能否请您帮我了解一下我应该对上述架构进行哪些更改? @TheeSritabtim
  • 如何从控制器访问架构
  • 我已经添加了定义模式的答案。从控制器访问架构是一个单独的问题,请发布一个包含更多信息的新问题。

标签: node.js mongodb model schema


【解决方案1】:

您正在使用 MongoDB 原生语法来定义您的架构。如果您使用的是猫鼬,猫鼬有自己的语法。请参考猫鼬documentation。对于您的架构,它将是:

var studentSchema = new mongoose.Schema({
  name: { type: String },
  teacherId: { type: mongoose.Schema.Types.ObjectId }
})

【讨论】:

  • 我想按照mongoDB原生语法继续
  • 请记住,本地验证方法在概念上与 mongoose 的方法有些不同。更多信息在这里dba.stackexchange.com/a/234871
【解决方案2】:

嗯,我解决这个问题的方法是使用在 Schema 导入中定义的类型。由于某种原因,直接导入 Types 模块不起作用——至少对 Map 来说很好。

import { Document, Schema, model, Query, Model } from "mongoose";

{
   ...
   metadata: { type: Schema.Types.Map, of: String, required: false },
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2021-02-16
    • 2022-01-04
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多