猫鼬似乎无法识别数字类型

时间:2020-03-19 19:45:44

标签: mongodb mongoose

我正在玩猫鼬文档:https://mongoosejs.com/docs/schematypes.html 由于某种未知的原因,下面的代码无法运行,并显示错误:

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

如果我将类型更改为String,则可以正常工作:

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

有人能指出发生了什么吗?我发现猫鼬的文档已经过时,看来他们没有更新文档。

下面是原始的代码,如在猫鼬页面中一样。

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

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 个答案:

答案 0 :(得分:0)

一整夜的睡眠后,我美丽的睡眠,我发现了问题所在:

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,表示已经存在于猫鼬中了

这使我想知道为什么猫鼬会在他们的教程中有一个带有这种原始错误的示例:我在遮蔽Number类型,这是教科书错误。

这让我觉得我自从试图学习猫鼬的新花样以来就缺少了一些东西,因此无法以它们提供的方式来运行该示例。

相关问题