在Express中导入模块时无法识别Mongo模型

时间:2017-03-26 18:10:47

标签: javascript node.js mongodb express

我正在尝试使用其他文件夹中的路线制作应用。在某些路由中,我尝试列出我在数据库中的itens。但是当我使用模型名称时,我得错误地说这个模型没有定义。我在其他文件夹中定义了模型和mongo连接,然后我将其包含在初始化文件(app.js)中。但当我访问我想要的路线时,我得到了错误。我尝试将db模块导入到路由中,但我还有另一个错误。

这是我想访问代码的路由(routes / blog.js):

module.exports = function(app){
    // here i tried import the db module, and doenst worked.

    app.get('/blog', function(req, res){
        Blog.find({}, function(err, result){
            if (err) {
                console.log(err);
            }
            else{
                res.send(result);
            }
        });
    });
};

然后它返回博客未定义,甚至导入数据库模型。如果是整个数据库模型,请说我正在尝试打开一个未关闭的连接。

我的代码:(database / dbConnection.js):

module.exports = function(app){

    //***   mongoose requirement ***
    var mongoose = require('mongoose');

    //***   Database connection setup ***
    mongoose.connect('mongodb://localhost/blog_app');

    //*** Schema creatin ***
    var blogSchema = new mongoose.Schema({
        title: String,
        image: String,
        body: String,
        created: {type: Date, dafault: Date.now()}

    });

    //***   Model creation ***
    var Blog = mongoose.model('Blog', blogSchema);

};

然后,我用来初始化应用程序的文件。

var express = require('express');
var moment = require('moment');
var bodyParser = require('body-parser');
var consign = require('consign');
var app = express();

consign().include('database').then('routes').into(app);


app.listen(3000, function(){
    console.log("Server running on port 3000. At: " + moment().format('LT'));
})

1 个答案:

答案 0 :(得分:0)

您应该将模型拆分为另一个文件:

var mongoose = require('mongoose');
var blogSchema = new mongoose.Schema({...})

module.exports = mongoose.model('blog', blogSchema)

要求它:

require('../models/blog')
来自路线/控制器文件的