mongoose模式的类型有错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoose模式的类型有错误相关的知识,希望对你有一定的参考价值。
我正在使用mongoose ODM开发一个使用mongodb的节点应用程序。我在类型引用驻留在不同文件中的模式时收到错误。
我在companyQuery.js文件中有以下代码:
const mongoose = require('mongoose');
const Company = require('./company');
const connectionString = 'mongodb://localhost/company'
mongoose.connect(connectionString);
mongoose.connection.on('connected', () => {
console.log('Mongoose connected');
})
mongoose.connection.on('disconnected', () => {
console.log('Mongoose is disconnected');
})
mongoose.connection.on('error', (err) => {
console.log(err, 'mongoose error');
})
它引用了文件company.js:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const companySchema = new Schema({
name: {
type: String,
required: true
},
founded: Date,
employees: Number,
active: true;
products: [String],
ceo: {
name: String,
age: Number
}
});
const Company = mongoose.model('Company', companySchema);
module.exports = Company;
这是我得到的错误:
/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:696
throw new TypeError('Undefined type ' + name + ' at ' + path +
^
TypeError: Undefined type 'undefined' at 'active'
Did you try nesting Schemas? You can only nest using refs or arrays.
at Function.Schema.interpretAsType (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:696:11)
at Schema.path (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:545:29)
at Schema.add (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:407:12)
at new Schema (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:110:10)
at Object.<anonymous> (/Users/ashley/salty-sardines/mongoose-3/company.js:3:44)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/Users/ashley/salty-sardines/mongoose-3/companyQuery.js:2:17)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
该问题在我的存储库中的三台不同的机器上复制,并且我已经重复编写了四次代码,结果相同。如果我删除const Company = require('./company');
并将信息合并到一张纸上,我可以让它工作。任何帮助将不胜感激,因为我已阅读所有其他关于此类错误的帖子,没有人提供我的解决方案。
答案
可能你只需要替换它:
active: true,
有了这个:
active: {
type: Boolean,
default: true,
}
以上是关于mongoose模式的类型有错误的主要内容,如果未能解决你的问题,请参考以下文章
在 mongoose 的模式类型中使用 TypeScript 类型
Mongoose + TypeScript:有条件地在模型上找到()文档抛出错误:联合类型有签名,但没有一个相互兼容
mongoose @prop() 装饰器类型:模式定义中的对象_NestJS
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段