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

我已经创build了基本的节点项目,我在模型文件夹内创build模型文件夹,我有模式文件夹和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,快车,节点,mongodb第一个结构。

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

你的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/'); (no()here))。

你在module.export上也有一个错字,你忘记了。

将你的Schema传递给第二个文件在第一个文件中做这样的事情:

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