Articles of model view controller

节点JS调用module.exports中的“本地”function

如何从module.exports声明的另一个函数中调用函数? 我有MVC结构节点js项目和一个名为TestController.js的控制器。 我想访问控制器内的方法,但使用this关键字给出了下面的错误: 不能调用未定义的方法getName "use strict" module.exports = { myName : function(req, res, next) { // accessing method within controller this.getName(data); }, getName : function(data) { // code } } 如何访问控制器内的方法?

在哪里用expressjs,mongoosejs和redis编写nodejs中的业务逻辑

我的业务逻辑包括一个请求上的mongodb操作和redis操作。 我不知道我们应该把逻辑代码放在哪里。 在Java项目中,我们有DAO , 服务和控制器对象。 但在nodejs项目中,我不知道在哪里放我的代码。 我应该把逻辑代码routes/index.js ? app.post('/deal', function(req, res) { … //TODO: here }); 或者创build一种服务对象,比如我们在Java程序中做什么?

batman.js可以用于快递吗?

我目前正在使用Backbone.js为我的webapp,但我刚刚阅读了有关batman.js ,我喜欢它提供的function。 但是,我想知道它是否与快递集成或我坚持蝙蝠侠服务器。

了解TodoMVC示例

开始学习node.js和backbone.js,并使用TodoMVC示例作为我的指南。 有几个部分我有困难缠绕我的头。 见下文。 这里是app.js. var express = require('express') , http = require('http') , mongoose = require('mongoose') , models = require('./models') , routes = require('./routes') , app = express(); app.configure(function () { app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(require('stylus').middleware({ src: __dirname + '/public' })); app.use(express.static(__dirname + '/public')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); }); app.configure('development', function […]

mongoose发现不工作

这是我第一次在Node / Express / Mongoose中编写一个MVC应用程序,所以我真的可以使用一些帮助。 我的.find()命令只是找不到任何东西! 🙁 结构是我有一个/ app文件夹在根。 / app文件夹包含/ models(模式),/ controllers和/ views。 我在根外面有app.js。 在app.js的某处: // all necessary config/setup stuff.. var mongoose = require('mongoose'); mongoose.connect(config.db); var app = express(); require('./config/routes')(app) 在我的routes.js文件中: var skills = require('../app/controllers/skills'); app.get('/', skills.showall); 我的控制器skills.js包含: var Skill = require('../models/skill'); exports.showall = function(req, res) { Skill.find({}, function(err, docs){ if (!err) { res.render('index', […]

Node.js,restify和正确的路由

我仍然围绕着Node,但是我有一个非常简单的问题。 我看到很多节点的例子,人们在一个app.js文件中声明它们的路线和所有的逻辑(有时把它们分解成子文件)。 我的问题基本上是:在应用程序中保留所有路由声明还是引导映射到文件结构的通用路由最好。 这可能看起来像一个原始的问题,但我的目标是要掌握节点内最有效的。 我目前正在使用Restify构buildAPI处理程序,但是我有另一个使用Express的应用程序(所以这个问题可能会回答这两个问题)。 在我的路线,我可以声明一个单一的路线引导像这样: app.all('/api/:package/:controller', function(request, response) { var controller = require( '../' + request.params.package + '/api/' + request.params.controller ); controller.index(request, response); response.end(); }); 这基本上接受来自API的所有调用,并针对适当的API控制器。 或者,我可以单独声明每个路由,或者甚至可以写一个遍历每个控制器的循环,并在init中声明它们。 所以: for (var i in packages.controllers) { app.all('api/' + package + '/' + controllers[i].name, function(request, response) { var controller = require( '../' + request.params.package + '/api/' + […]

用于“传统”站点的Node.js

我现在正在深入研究Node.js,整个想法对我来说似乎很棒。 但是我对使用Node.js的好处有什么感兴趣, 那就是在开发具有AJAXfunction而没有实时特性的“传统”站点时。 当我说传统时,我指的是通常在PHP,ASP.NET等平台上使用MVC框架构build的网站。 我知道Express框架是stream行的,但问题更多的是通过切换到Node.js,而不是简单的“我可以在Node中做MVC吗?”我会获得什么。

一个node.js高速路由和一个控制器有什么区别?

传统控制器在快速路线上有什么不同或更强大的function? 如果你有一个快速的应用程序和定义模型,它成为一个MVC应用程序,还是有更多的必要? 我只是想知道,如果我没有升级到更合理的“控制器”,我错过了我的节点快递应用程序中的额外/更简单的function。 如果有这样的事情。 谢谢! 编辑:澄清,如果你使用这样的路线: // routes/index.js exports.module = function(req, res) { // Get info from models here, res.render('view', info: models); } 与控制器有什么不同? 控制器能做更多吗?

可以在node.js模块中asynchronous初始化导出吗?

由于MongoDB数据库访问和初始化在Node.js上是asynchronous的,所以我想为每个集合定义一个模块,在db初始化之后导出包装数据库调用。 这样的“Cars.model.js”模块看起来像这样: var db = require("mongodb"); db.collection("cars", function(err, col) { exports.getCars = function(callback) { col.find({}, callback); }; }); 以便其他模块可以运行: var carModel = require("Cars.model.js").getCars; getCars(err, cars) { // (do something with cars here…) }; 它发生在我身上, getCars是未定义的,因为数据库访问尚未初始化时,我的第二个模块运行。 你如何处理创build这样的asynchronous数据库模型?

如何正确构buildnodejs代码

我一直在玩node.js一段时间,我真的明白它有多棒。 然而,我正在努力理解的一件事是我应该如何构build我的代码,以便它是可维护的。 我在互联网上看到的大多数教程都将JS全部放在一个文件中,这对于pipe理代码来说并不是一个好的方法。 我意识到在JavaScript中没有这样的实际上的“类”,但是有没有一种(标准)方式来对我的代码进行可维护性格式化,就像构build一个PHP项目一样?