背景资料
我刚创建了我的第一个快递申请。我可以看到它创建了一堆文件和默认的文件夹结构。这就是我的app结构目前的样子:
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$
目标
我想创建一个名为'小部件的新路线'并且当调用GET方法时,我需要调用redis数据库并执行查询。 我想用来触发这个get的URL是这样的:
http://myserver/tutorial1/widgets/
或
http://myserver/tutorial1/widgets/12345
其中12345是我要查询的小部件键。
到目前为止我做了什么
我发现此文档解释了如何连接/查询redis数据库:http://expressjs.com/en/guide/database-integration.html#redis
我还复制了快速发电机创建的路线/ users.js"免费"以route / 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行。
任何有关优秀教程的建议或链接都将不胜感激。
答案 0 :(得分:0)
简短的回答是肯定的,MVC运行良好,数据库的东西肯定会进入模型。
但是,有很多方法可以给猫皮肤。在这一点上有一些相当微不足道的东西,我认为你应该做一些方便你的事情,感觉就像一个相当干净的设计。
问题在于,随着系统变得越来越复杂,您需要一种方法来平滑地发展它。你永远不会有最终的终极'最好的'设计,因为现实会随着你的变化而变化。
请务必首先查看node-modules.com,npmjs.com,npms.io,以探索已经实施和流行的众多(且各种各样)功能强大的设计。
我认为如果你有时间,你应该探索多种不同的策略来组织你的代码。
更大的问题是,你怎么可能在未完全破坏你的应用程序(并且不知道它)的情况下改变这种设计(你 想要最终改变它)?
所以我认为现在不要过多地为代码组织而烦恼,而是花费精力来提出尽可能多地自动测试代码的方法。这样,当您更改设计时,您将能够看到发生了什么 - 因此更改设计是可行的。
您希望在可行的情况下进行单元测试,否则需要集成测试,大型端到端测试。
如果您可以将某些东西放入其自己的模块/模型文件中,并将其作为一个单元进行单独测试,那么这可能比其他设计更好。