0

私はいくつかのnode.js/expressアプリを書いていますが、次のメッセージが表示されます:

新しいmongoose.Error.MissingSchemaError(名前)をスローします。

MissingSchemaError: モデル "./models/User" のスキーマが登録されていません。

Express-generatorを使用してプロジェクトを生成しました。プロジェクト ツリーは次のようになります。

app.js

置き場/

node_modules/

パッケージ.json

公衆/

ルート/

ビュー/

モデル/

models/フォルダー に 4 つのモデルを作成しました: user.js

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

    var UserSchema = new Schema({
        email: String,
        hash: String,
        salt: String,
        first_name: String,
        last_name: String,
        position: String
    });
    module.exports = mongoose.model('User', UserSchema);

payment.js

    var mongoose = require('mongoose');
    require('./user');

    var PaymentSchema = new mongoose.Schema({
        bookedDate: Date,
        salary: {type: Number, default: 0},
        employee: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
    });
    module.exports = mongoose.model('Payment', PaymentSchema);

task.js

var mongoose = require('mongoose');
require('./user');

var TaskSchema = new mongoose.Schema({
    job: String,
    employee: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
    estimatedTime: { type: Number, default:0 },
    hoursLogged: { type: Number, default:0 }
});

module.exports = mongoose.model('Task', TaskSchema);

休暇.js

var mongoose = require('mongoose');
require('./user');
var VacationSchema = new mongoose.Schema({
    startDate: Date,
    endDate: Date,
    title: String,
    employee: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});

module.exports = mongoose.model('Vacation', VacationSchema);

私のエラーは、モデルのロードで始まるファイル: routes\index.jsに表示されます:

var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');

require('../models/user');
require('../models/task');
require('../models/payment');
require('../models/vacation');

var User = mongoose.model('./models/User'); // <-- error throws here
var Task = mongoose.model('./models/Task');
var Vacation = mongoose.model('./models/Vacation');
var Payment = mongoose.model('./models/Payment');

しかし、私がロードする最初のファイルは、次 で始まるapp.jsです。

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var app = express();

var mongoose = require('mongoose');
require('./models/user');
require('./models/task');
require('./models/payment');
require('./models/vacation');

var routes = require('./routes/index'); //<-- index.js with error loads here
var users = require('./routes/users');

mongoose.connect('mongodb://localhost/local_test');

助言がありますか?

4

1 に答える 1