我在Schema
文件中创建了models/mymodel.js
。我也有我的模型以及我的方法。
如何将它们导出到我的routes
?
答案 0 :(得分:5)
// route.js
var mongoose = require("mongoose");
var Posts = mongoose.model("posts")
...
确保设置运行所有模型文件的引导机制。完成后,您应该为一组模型调用mongoose.model("name", Model)
。
这已经在内部缓存了mongoose中的那些模型。因此,您只需在任意位置拨打mongoose.model("name")
即可。
唯一重要的是执行顺序。模特&在运行路由之前需要注册模式。
这很简单:
// create app
var app = express.createServer(...);
// do stuff with app
var files = fs.readdirSync("models");
files.forEach(function(file) {
require("models/" + file);
});
var routes = fs.readdirSync("routes");
routes.forEach(function(route) {
require("routes/" + route)(app);
});
app.listen(80);
请注意,通常readdirSync
是邪恶的,但在您收听服务器之前可以在启动时执行阻止调用(例如require
)
答案 1 :(得分:1)
Mongoose在您require()
时创建一个单例,后续调用返回相同的实例。
因此,只要你的应用程序进入时需要mongoose,然后定义你的模型,它们将在你需要猫鼬的任何其他文件中提供,如Raynos所述。
除非您想手动管理与数据库服务器的连接,否则最好在您的app init中调用mongoose.connect('...')
;连接将在请求中保持不变。