如何在Express项目中正确布置Mongoose?

时间:2011-09-13 20:08:48

标签: node.js express mongoose

我在Schema文件中创建了models/mymodel.js。我也有我的模型以及我的方法。

如何将它们导出到我的routes

2 个答案:

答案 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('...');连接将在请求中保持不变。