节点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)