【发布时间】:2016-09-28 13:36:25
【问题描述】:
背景信息
我刚刚创建了我的第一个 express 应用程序。我可以看到它创建了一堆文件和默认文件夹结构。这是我的应用程序结构目前的样子:
me@mydevbox:/var/www/html/nodejs_samples/tutorial1$ ls -lah
total 36K
drwxr-xr-x 7 me me 4.0K Sep 28 09:26 .
drwxrwxr-x 5 me me 4.0K Sep 28 08:45 ..
-rw-rw-r-- 1 me me 1.5K Sep 28 08:45 app.js
drwxr-xr-x 2 me me 4.0K Sep 28 09:20 bin
drwxrwxr-x 96 me me 4.0K Sep 28 09:26 node_modules
-rw-rw-r-- 1 me me 352 Sep 28 09:26 package.json
drwxr-xr-x 5 me me 4.0K Sep 28 08:45 public
drwxr-xr-x 2 me me 4.0K Sep 28 09:26 routes
drwxr-xr-x 2 me me 4.0K Sep 28 08:45 views
me@mydevbox:/var/www/html/nodejs_samples/tutorial1$
目标
我想创建一个名为“widgets”的新路由,当调用 GET 方法时,我需要调用 redis 数据库并执行查询。 我想用来触发这个获取的 URL 是这样的:
http://myserver/tutorial1/widgets/
或
http://myserver/tutorial1/widgets/12345
其中 12345 是我要查询的小部件键。
到目前为止我做了什么
我找到了解释如何连接/查询 redis 数据库的文档:http://expressjs.com/en/guide/database-integration.html#redis
我还将 express 生成器为我“免费”创建的 routes/users.js 复制到 routes/widgets.js 作为起点。
这是我的 routes/widgets.js 文件的样子:
me@mydev:/var/www/html/nodejs_samples/tutorial1$ cat routes/widgets.js
var express = require('express');
var router = express.Router();
/* GET widgets listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
问题
我不清楚应该在哪里添加数据库连接逻辑和查询逻辑。我习惯于 MVC,您将所有数据库逻辑拆分到模型中。
我可以将所有内容都放在 route/widgets.js 文件中吗?
如果有帮助,这里是我的 app.js 文件的链接:http://pastebin.com/hAe5mvwt。我添加了 2 行 - 第 10 行和第 28 行。
任何好的教程的建议或链接将不胜感激。
【问题讨论】:
-
你可以,但是它直接耦合到路由处理程序。以这种方式开始很好,但我更喜欢更强的关注点分离。归根结底,这归结为意见:没有一种特定的“正确”方式来分解功能。
标签: javascript node.js model redis node-redis