1

モデルをロードするためにコントローラーに名前を付けるのに問題があります。

私のapp.js

var express = require('express');
var app = express();
app.everyauth = require('everyauth');
app.mongoose = require('mongoose');

var fs = require('fs');

var config = require('./config.js')(app, express);

//Include models
var models = {};
fs.readdir(__dirname + '/models', function(err, files){
    if (err) throw err;
    files.forEach(function(file){
        var name = file.replace('.js', '');
        models.name = require('./models/' + name)(app.mongoose).model;
    });
});

//Include controllers
fs.readdir(__dirname + '/controllers', function(err, files){
    if (err) throw err;
    files.forEach(function(file){
        var name = file.replace('.js', '');
        require('./controllers/' + name)(app, models);
    });
});

app.listen(process.env.PORT || 3000);

たとえば、モデルにtest.jsがあります

データベースで何かを見つけたい場合は、次のようにします。

models.test.find({}, function(err, docs){});

しかし、テストが不明であるため機能しません。

models.name.find({}, function(err, docs){});

したがって、名前をモデルの名前に置き換えます

ありがとう

4

1 に答える 1

3

これを試して;

models[name] = require('./models/' + name)(app.mongoose).model;

ディレクトリ同期モードを読みたい場合は、次を使用できます

var models = {};
var files = fs.readdirSync(__dirname + '/models');
for(var i in files) {
  var name = files[i].replace('.js', '');
  models[name] = require('./models/' + name)(app.mongoose).model;
}

// Now, you can use
models.test
于 2012-11-16T21:02:15.063 に答える