如果我在与index.js相同的文件夹中有schema.js,那就像
那样 var schemas = require('./schema');
工作正常,但如果我将schema.js放在另一个文件夹中并编写
var schemas = require('./folder/schema');
我收到错误Cannot find module
发生什么事了?
Edit1:我通过使用..folder / schema而不是single来摆脱错误。并且服务器运行但它仍然无法正常工作,因为我无法使用通过index.js文件中的../model/schema中的module.export返回的mongoosedb对象。它说myModel.find不是一个函数。怎么回事?
控制器/ findallusers.js
var myModel = require('../models/schema');
var alluser;
myModel.find({}, function(err, foundData){
if(err){
console.log(err);
res.status(500).send();
}
else{
alluser = foundData;
}
console.log(alluser); <-- this log is defined
});
console.log(alluser); <-- this log is undefined
module.exports = alluser; <-- cant export anything
答案 0 :(得分:3)
正确解析schema.js的路径
假设您的项目结构如此
Project
|
+-- routers
| |
| +-- index.js
+-- models
| |
| +-- schema.js
//in index.js
var schemas = require('../models/schema');
要解决第二个错误,即myModel.find不是函数使用,module.exports而不是使用module.export
module.exports = myModel;
解决您的第三个问题
// controllers/findallusers.js --> (keep name simple i.e userController.js)
var myModel = require('../models/schema');
module.exports = {
/**
* Get All Users
*/
list: function(req, res) {
myModel.find({},function(err, users){
if(err) {
return res.status(500).json({message: 'Error getting Users.'});
}
return res.json(users);
});
},
/**
* Keep Adding more functions as you want
*/
create: function(req,res){
//functionality to create user
},
delete: function(req,res){
// functionality to delete user
},
someDummyName: function(callback) {
myModel.find({},function(err, users){
if(err) {
return callback(err)
}
return callback(null,users);
});
}
}
//index.js call this new method i.e someDummyName as
router.get('/allusers', function(req, res){
userController.someDummyName(function(err,result){
if(err) {
//return err
}
//process result as per your need
});
});
答案 1 :(得分:-1)
您正在从schema.js导出变量myModel并仅在index.js中导入模式
所以,尝试使用myModel.myModel.find()
引用.find函数我的猜测是myModel变量在index.js中现有的myModel变量后面