我创建了基本节点项目,其中我在模型文件夹中创建了模型文件夹我有模式文件夹和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的第一个结构。
请帮助我不知道自己做错了什么
答案 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)