0
我对使用Express.js相当陌生,但已经编写了几个应用程序。我总是最后向上连接到数据库,在我的app.js文件和附加数据库连接到每一个请求对象,如下所示:Express.js独立模型,视图和控制器
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();
});
执行此方法的最佳方法是什么?我应该返回模型的承诺吗?
感谢您的帮助! Dennis
确定。但是,在文件person-model.js中我们假设我实现了一个get()函数。我会兑现承诺吗?或结果数组?例如,我会返回person.find({},{});或者将在模型中处理承诺并返回结果person.find({},{})。then(){.. return [数组结果]} –
这真的取决于您如何实现它。如果它是一个异步操作,那么最好还是返回promise,特别是因为从已使用的promise中返回一个数组并不会阻止执行,直到它完成。 –