代码之家  ›  专栏  ›  技术社区  ›  ankit

MissingSchemaError:启动节点服务器时,尚未为模型“User”注册架构

  •  0
  • ankit  · 技术社区  · 7 年前

    服务器js公司

    require('babel/register');
    require('./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);
        }
        );
    });
    

    使用者js(型号)

    "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 回复  |  直到 7 年前
        1
  •  1
  •   a--m    7 年前

    尝试将导入文件更改为:

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

    (因为我看不到您的“../schemas”文件,所以尝试在此处猜测答案。)

    推荐文章