节点js将架构放在其他文件夹中

时间:2015-12-28 08:00:35

标签: node.js mongodb mongoose

我创建了基本节点项目,其中我在模型文件夹中创建了模型文件夹我有模式文件夹和index.js

模式文件夹中的

包含我的项目的所有模式,在index.js中我写了一些像这样的东西

var s1 = require('./schema/schema1');
var s2 = require('./schema/schema2');


module.export = function(app) {
    schema1= s1 ;
    schema2= s2 ;
}

在控制器文件中我正在访问这样的模型

    var model = require('./models/');

    model.schema1.find(function(err, data) {
    })

但上面的代码没有用,它给我错误TypeError: Cannot read property 'find' of undefined但是当我在控制器中尝试这样的东西

var schema1= require('../models/schema/schema1');
schema1.find(function(err,data){});

它的工作正常,但我想在我的项目中使用mongoose,express,node,mongodb的第一个结构。

请帮助我不知道自己做错了什么

2 个答案:

答案 0 :(得分:1)

您的index.js导出的函数不返回任何内容。要么:

var s1 = require('./schema/schema1');
var s2 = require('./schema/schema2');

module.exports = function (app) {
    return {
        schema1: s1,
        schema2: s2
    }
}

然后像这样要求:var model = require('./models/')();(注意(),它是一个函数,你必须调用它来获取返回的对象。)

或者,如果您根本不使用app参数:

var s1 = require('./schema/schema1');
var s2 = require('./schema/schema2');

module.exports = {
    schema1: s1,
    schema2: s2
}

然后你可以简单地var model = require('./models/');(这里没有())。

您还有 module.export s 的拼写错误,您忘记了s

答案 1 :(得分:0)

将你的Schema传递给第二个文件在第一个文件中执行类似的操作:

var mySchema = new Schema({
    // my props
});
require('./app/anotherFolder.js')(mySchema)