MissingSchemaError:架构尚未注册模型"用户"启动节点服务器时

时间:2018-04-04 07:08:43

标签: node.js mongoose npm ecmascript-6 npm-install

server.js

require('babel/register');
require('./index');

index.js

'use strict';

import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
import path from 'path';
import mongoose from 'mongoose';

import { MONGO_CONFIG } from './config';
import { Routes } from './api/routes';
import { RequestLogger } from './lib';

const app = new express();
const requestLogger = new RequestLogger(FILE_CONFIG.LOG_DIR);

app.use(cors());
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({
    limit: "50mb",
    extended: true,
    parameterLimit: 50000
    })
);
app.use(requestLogger.init());

Routes.init(app);

app.use("/static/js/", express.static("./public/js"));
app.use("/static/html/", express.static("./public/html"));
app.use("/static/images/", express.static("./public/images"));
app.use("/static/css/", express.static("./public/css"));
app.use("/static/fonts/", express.static("./public/fonts"));

const PORT = process.env.PORT || 8080;

app.listen(PORT, function() {
    console.log("[Info] Listening on Port:", PORT);
    console.log("[Info] Connecting to MongoDB...");

    // MongoDB Connection
    mongoose.Promise = global.Promise;
    mongoose.connect(MONGO_CONFIG.CONNECTION_URI,MONGO_CONFIG.OPTIONS).then(
    function() {
        console.log('[Info] MongoDB Connection to Database "' + MONGO_CONFIG.DBNAME + '" Successful!');
    },
    function(error) {
        console.error("[Error] MongoDB Connection Error:", error);
        return process.exit(-1);
    }
    );
});

User.js(Model)

"use strict";

import async from 'async';
import { MongoModel, ResponseBody } from '../../lib'; 
import UserSchema from '../schemas';
import { Aegis } from '../../lib';

const aegis = new Aegis();
const mongoModel = new MongoModel('User', UserSchema);

export const UserModel = {
  create: create,
  index: mongoModel.index,
  findById: mongoModel.findById,
  login: login,
  getSecretKey: getSecretKey
}

MongoModel.js

'use strict';

import mongoose from 'mongoose';
import async from 'async';

export class MongoModel {
  constructor(modelName, Schema) {
    this.MongooseModel  = mongoose.model(modelName, Schema);
    this._queryParams   = Schema._queryParams;
    this._filterQuery   = Schema._filterQuery;

    // Method Hard-Binding
    this._execQuery       = this._execQuery.bind(this);
    this._findRaw         = this._findRaw.bind(this);
    this._findOneRaw      = this._findOneRaw.bind(this);
    this._find            = this._find.bind(this);
    this._findOne         = this._findOne.bind(this);
    this.index            = this.index.bind(this);
    this.findById         = this.findById.bind(this);
    this.create           = this.create.bind(this);
    this.update           = this.update.bind(this);
    //this.update_or_insert = this.update.bind(this);
    this.findOneAndUpdate = this.findOneAndUpdate.bind(this);
    this.remove           = this.remove.bind(this);
  }

我收到以下错误:

MissingSchemaError: Schema hasn't been registered for model "User".
Use mongoose.model(name, schema)
at new MissingSchemaError (D:\PersonalProjects\cyborg\node_modules\mongoose\lib\error\missingSchema.js:20:11)
at Mongoose.model (D:\PersonalProjects\cyborg\node_modules\mongoose\lib\index.js:391:13)
at new MongoModel (D:/PersonalProjects/cyborg/lib/MongoModel.js:11:36)
at Object.<anonymous> (D:/PersonalProjects/cyborg/api/models/User.js:9:20)
at Module._compile (module.js:635:30)
at normalLoader (D:\PersonalProjects\cyborg\node_modules\babel\node_modules\babel-core\lib\api\register\node.js:199:5)
at Object.require.extensions.(anonymous function) [as .js] (D:\PersonalProjects\cyborg\node_modules\babel\node_modules\babel-core\lib\api\register\node.js:216:7)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (D:\PersonalProjects\cyborg\api\models\index.js:11:13)
at Module._compile (module.js:635:30)
at normalLoader (D:\PersonalProjects\cyborg\node_modules\babel\node_modules\babel-core\lib\api\register\node.js:199:5)
at Object.require.extensions.(anonymous function) [as .js] (D:\PersonalProjects\cyborg\node_modules\babel\node_modules\babel-core\lib\api\register\node.js:216:7)

我在stackoverflow上看到了许多类似的问题,但无法找到解决方案。请帮助。

代码工作得非常好,但是在我做了一些从ES5迁移到ES6的更改后,我开始收到此错误。

已提及以下链接

MissingSchemaError: Schema hasn't been registered for model "User"

Mongoose Schema hasn't been registered for model

1 个答案:

答案 0 :(得分:1)

尝试将导入文件更改为:

import { UserSchema } from '../schemas';

(试着在这里做一些猜测,因为我看不到你&#39; ../ schemas&#39;文件。)

相关问题