mongodb - 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);
,它不会出错,但是如果不定义模型我就无法工作!
解决方案
经过一夜好眠,我的美容觉,我发现了问题:
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 类型,这是教科书错误。
这让我觉得我错过了一些东西,因为我正在尝试学习猫鼬的新技巧,而且我无法按照他们提供的方式运行示例。
推荐阅读
- javascript - 尝试与页面上的元素交互时,出现错误(javascript 错误:无法读取属性 'clientWidth' of null ')
- angular-material - Angular 9:我在 material-angular 中的 mat-tab-group 有问题
- spring - 如何使用criteriaquery转换sql查询mysql
- kubernetes - 用于构建实时同步客户端的应用程序的 kubernetes artitachture?
- c# - 如何在现有文档中插入封面和分页符?
- vue.js - 在 HTML 中显示月份的日历 Vue.JS 问题
- c++ - 如何正确传递 constexpr 参数?
- php - 为什么 PHP 从 CEST 时区的时间戳返回错误的时间?
- android - 无法使用 Flutter 中的自定义绘制制作自定义平行四边形
- python - 如何在 Flask 前端从 Python 和 GET POST 数据