采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
你好 我遇到这个问题 不知如何解决 希望大师指点。
Schema hasn't been registered for model "versions"
当我在同一个js文件中引入两个model时会报出上面的错误。
let mongoose = require('mongoose');let Dream = mongoose.model('dreams');let Version = mongoose.model('versions');
引入多个 model 这个用法没毛病的,冲突的原因应该不是引入两个 model,而是 model 的注册方法,或者初始化方法里面可能有问题。
有可能是 model 还没有注册完毕,代码里就来调用 model,有可能是 versions 里面暴露的有问题,所以可以先把 versions 代码贴出来看看,先排除掉这个原因
非常感谢!
感谢回答,根据你的思路 很快排除了两个问题后正常运行了
1.在使用 versionHelper 前要调用 require('../models/version');注册model
2.由于注册Schema的时候mongodb自动在Schema尾部加了 s 我在注册和 引用model的时候 s 没有保持一致
因为 userHelper 、versionHelper 只要在同一个文件引用 就会出现以上报错
所以我在想是不是 mongoose.model('users'); mongoose.model('versions');
这两个代码会冲突或者覆盖?
如果是这样,我该如何设计一个 dbhelper 实现共通的db操作呢?
好的。上面是没说清楚。 结构很简单的
controllers、 dbhelper 两个层
controllers 实现业务代码 dbhelper 实现 db操作
controllers 层里面有个类 比如实现用户的增、删、查、改等业务操作
在这个controllers里面引用了userHelper用来实现对db的操作
到此 代码运行一切正常。
后来新增了一个需求:需要每个接口 检测版本
所以当前这个类 不但引用了userHelper,还需要引用一个 公用的versionHelper 来检查版本
问题就在这里:出现同时引用 userHelper 和 versionHelper 时 就会报上面的错误
let userHelper = require('../dbhelper/userHelper'); let versionHelper = require('../dbhelper/versionHelper');
两个helper分别引用了 require('mongoose');
userHelper :
let mongoose = require('mongoose'); let User= mongoose.model('users');
versionHelper
let mongoose = require('mongoose'); let Version= mongoose.model('versions');
可以把 versions 代码贴出来看一下
登录后可查看更多问答,登录/注册
Koa2+MongoDB+Parcel+Puppeteer+AntDesign快速搭建预告片网站
993 7
1.0k 7
829 6
682 6
730 6