我使用Express.js相当新,但是已经编写了一些应用程序。我总是最终连接到我的app.js文件中的数据库,并将db连接附加到每个请求对象,如下所示:
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/db');
app.use( function(req,res,next) {
req.db = db;
next();
});
然后,在我的路径文件中,我将执行以下操作:
var express = require('express');
var router = express.Router();
router.get('/', function(req,res,next) {
var db = req.db;
var person = db.get('person');
person.find( {}, {}, function(err, docs) {
if ( err ) { console.log("error"); }
res.status(200);
res.send(JSON.stringify(docs));
res.end();
});
});
但是,我正在浏览一个我创建的旧应用程序,我想将模型与路径文件分开。例如,继续上面的例子,我希望能够做到这样的事情:
var person = require('./person-model');
router.get('/', function(req,res,next) {
var list = person.get();
res.status(200);
res.send(JSON.stringify(list);
res.end();
});
执行此方法的最佳方法是什么?我应该从模型中返回一个承诺吗?
答案 0 :(得分:0)
您可以提取文件的所有模型部分,并在项目结构中有意义的地方将它们放入新文件中。然后,无论您需要使用哪种方法,都可以放置一个与module.exports
结合使用的对象。例如,如果您只想导出db
,只需将module.exports
设置为db
对象即可。
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/db');
module.exports = db;
然后,在您的路线文件中,您可以执行以下操作:
var person = require("./models/person-model.js");
router.get('/', function(req,res,next) {
var list = person.get();
res.status(200);
res.send(JSON.stringify(list);
res.end();
});