首页 > 解决方案 > Mongoose 似乎无法识别 Number 类型

问题描述

我正在玩猫鼬文档: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"
  }
});

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

原始代码,如猫鼬页面所示,如下所示。

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

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);,它不会出错,但是如果不定义模型我就无法工作!

标签: mongodbmongoose

解决方案


经过一夜好眠,我的美容觉,我发现了问题:

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();

问题是:我正在定义一个 typeNumber,即mongoose 已经存在

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

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


推荐阅读