Mongoose 似乎无法识别 Number 类型

Posted

技术标签:

【中文标题】Mongoose 似乎无法识别 Number 类型【英文标题】:Mongoose does not seem to recognize the Number type 【发布时间】:2020-06-30 23:52:40 【问题描述】:

我正在玩猫鼬文档:https://mongoosejs.com/docs/schematypes.html 由于某些我不知道的原因,下面的代码没有运行,它给出了错误:

TypeError: Invalid value for schema path `integerOnly.type`, got value "undefined"

如果我将类型更改为字符串,例如,它可以工作:

var numberSchema = new Schema(
  integerOnly: 
    type: String,
    get: v => Math.round(v),
    set: v => Math.round(v),
    alias: "i"
  
);

谁能指出发生了什么?我发现 mongoose 文档已经过时了,他们似乎没有更新文档。

下面是mongoose页面中的原始代码。

//--------------------------------------------------

require("./connection");

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

//---------------------------------------------------

var numberSchema = new Schema(
  integerOnly: 
    type: Number,
    get: v => Math.round(v),
    set: v => Math.round(v),
    alias: "i"
  
);

var Number = mongoose.model("Number", numberSchema);

细节。如果我注释掉var Number = mongoose.model("Number", numberSchema); 行,它不会出错,但如果不定义模型我就无法工作!

【问题讨论】:

【参考方案1】:

睡了一晚,我的美容觉,我发现了问题:

var numberSchema = new Schema(
  integerOnly: 
    type: Number,
    get: v => Math.round(v),
    set: v => Math.round(v),
    alias: "i"
  
);

var NumberType = mongoose.model("Number", numberSchema);

var doc = new NumberType();

问题是:我正在定义一个类型,即Number已经存在于猫鼬中

这让我想知道为什么 mongoose 会在他们的教程中有一个带有如此原始错误的示例:我隐藏了 Number 类型,这是教科书错误。

这让我觉得我错过了一些东西,因为我正在尝试学习猫鼬的新技巧,并且我无法按照他们提供的方式运行示例。

【讨论】:

以上是关于Mongoose 似乎无法识别 Number 类型的主要内容,如果未能解决你的问题,请参考以下文章

节点,js - Mongoose - 无法保存地理多边形 - CastError: Cast to number failed

Mongoose 校验参数

在 Mongoose 中定义变体类型

无法使用 mongoose、Node.js 将数据插入到 mongoDB 中的 Document 字段中

Firefox 无法识别 WebP MIME 类型

mongoose连表查询2