MissingSchemaError:Schema尚未注册模型" App"

时间:2018-06-11 07:53:01

标签: node.js mongoose

使用Node.js项目 - Express - MongoDB

当我正在运行应用程序时,我收到以下错误

E:\asista\asistabot2\node_modules\mongoose\lib\index.js:337
      throw new mongoose.Error.MissingSchemaError(name);
      ^
MissingSchemaError: Schema hasn't been registered for model "App".
Use mongoose.model(name, schema)
    at new MissingSchemaError (E:\asista\asistabot2\node_modules\mongoose\lib\error\missingSchema.js:20:11)
    at Mongoose.model (E:\asista\asistabot2\node_modules\mongoose\lib\inde    at Object.<anonymous> (E:\asista\asistabot2\app\controllers\chat.js:8:    at Module._compile (module.js:643:30)

这是我的server.js

的一部分
module.exports=app;
 // Bootstrap models
fs.readdirSync(models)
  .filter(file => ~file.search(/^[^\.].*\.js$/))
  .forEach(file => require(join(models, file)));

require('./config/express')(app);
require('./config/routes')(app);

connect()
  .on('error', console.log)
  .on('disconnected', connect)
  .once('open', listen);

function listen(){
    if(app.get('env')=='test')
     return;
    app.listen(port);
    console.log('Express app started on port ' + port);
}
function connect () {
    var dbUrl ='mongodb://localhost:27017/asista';
    mongoose.connect(dbUrl);
    var db=mongoose.connection;
    return db;
}

这是我的Chat.js

的一部分
const mongoose = require('mongoose');

const App =mongoose.model('App')
exports.chat =(req,res)=>{
     res.send('i am inside chat ->');
};

数据库模型提到了这个App.js

var mongoose = require('mongoose')
var Schema = mongoose.Schema;

var appSchema = new Schema({
    agent_key:String        

},{ collection: 'app' });

mongoose.model("app",appSchema);

我该怎么办?我如何解决它?

1 个答案:

答案 0 :(得分:0)

您没有定义架构!

首先,您需要创建一个像这样的模式

var appSchema = new Schema({
    name:  String
});

然后,您可以从中创建模型

const App = mongoose.model('App', appSchema);

或者,您可以将模式提供给模型函数

const App = mongoose.model('App', { name: String });