NodeJS中使用Mongoose创建Model报错:ReferenceError: string未定义
尝试在Node.js中使用Mongoose创建User模型,编写的代码如下:
const mongoose = require ('mongoose'); const User = mongoose.model('User',{ name:{ type:string }, lastname:{ type:string }, age: { type:Number } }) module.exports = User;
运行后触发如下错误:
C:\Users\models\user.js:6
type:string
^
ReferenceError: string is not defined
at Object.(C:\Users\moham\Desktop\backend\models\user.js:6:14)
at Module._compile (node:internal/modules/cjs/loader:1159:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1061:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.(C:\Users\moham\Desktop\backend\server.js:2:14)
at Module._compile (node:internal/modules/cjs/loader:1159:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
Node.js v18.12.1
代码中使用的小写string不是合法的全局变量,Mongoose Schema定义里的类型需要使用首字母大写的String(JavaScript内置对象构造器),小写形式会被识别为未定义的标识符,从而抛出引用错误。
const mongoose = require('mongoose'); const User = mongoose.model('User', { name: { type: String // 改为大写的String }, lastname: { type: String // 改为大写的String }, age: { type: Number } }); module.exports = User;
Mongoose中所有Schema字段类型都需要使用首字母大写的构造函数形式,比如String、Number、Date、Boolean等,这些都是JavaScript的内置对象,小写的类型名不属于合法的全局标识符,会导致未定义错误。
内容的提问来源于stack exchange,提问作者Mohamed Bouneb

