Javascript Node.js+;mongo+;expressmvcapi:如何使用控制器?
我正在写我的第一个Javascript Node.js+;mongo+;expressmvcapi:如何使用控制器?,javascript,node.js,mongodb,model-view-controller,mongoose,Javascript,Node.js,Mongodb,Model View Controller,Mongoose,我正在写我的第一个MEANapp。。。正确地说,目前它是一个男性:-)应用程序,因为它现在只是服务器端API。。。 我想遵循MVC模式(或者MC,因为我没有视图) 我想为我的应用程序选择一个正确的结构,我试图了解如何使用路由、模型和控制器。。。特别是,我不清楚如何使用控制器 第一个问题是:如何以及在哪里定义我的类方法 当前: 我在“models/person.js”中定义了一个“model”。 然后,我在同一个模型文件中添加(类)方法,方法如下: personSchema.method.save
MEAN
app。。。正确地说,目前它是一个男性:-)应用程序,因为它现在只是服务器端API。。。
我想遵循MVC
模式(或者MC
,因为我没有视图)
我想为我的应用程序选择一个正确的结构,我试图了解如何使用路由、模型和控制器。。。特别是,我不清楚如何使用控制器
第一个问题是:如何以及在哪里定义我的类方法
当前:
我在“models/person.js”中定义了一个“model”。
然后,我在同一个模型文件中添加(类)方法,方法如下:
personSchema.method.save = function(callback) {
this.model('Person').savefind({ type: this.type }, callback);
}
module.exports = mongoose.model('Person', personSchema);
然后,在routes(“routes/persons.js”,例如)中,我require()
我需要的模型,并实现route方法
如果这是一种正确且常见的方法,我不理解如何使用控制器…:-(
在服务器端API公开应用程序中可能不需要控制器
希望有人能对我的理解有所帮助…:-)假设您使用的是Express 4
创建一个app.js
,例如
var express = require('express')
, app = express()
//we're loading in our 'controllers' as middleware
app.use(require('./controllers'))
app.listen(3000, function() {
console.log('Listening on port 3000...')
})
然后在/controllers
中创建一个index.js,如下所示:
var express = require('express')
, router = express.Router()
router.use('/person', require('./person'))
//default routes here
//these could go in a separate file if you want
router.get('/', function(req, res) {
res.send('Home page')
})
router.get('/about', function(req, res) {
res.send('Learn about us')
})
module.exports = router
接下来,您的人员
控制器将如下所示:
var mongoose = require('mongoose'),
Person = mongoose.model('Person'),
express = require('express'),
router = express.Router()
// actual url will be /person/ since we're loading this in via index.js
router.get('/', function(req, res) {
Person.find({}, function(err, results) { return res.send(results); } );
})
router.post('/', function(req, res) {
//save logic here
})
module.exports = router
控制器基本上是域代码和视图代码之间的适配器,这就是在Express中使用路由代码实现的功能。您可能希望通过快递人员了解更多信息,并谈论路线与控制器
另一方面,您会发现Angular确实有一个名为controllers的组件,理想情况下,它会将服务器对话方面委托给其他Angular组件,如服务,但可以说,这与您在典型MVC示例中可能想到的控制器并不完全一样。是的,谢谢。。。我将您放入/controllers
的逻辑放入'/routes`。。。也许我的误解就是这个。。。谢谢..@Alex所以在NodeJS中,控制器和模型基本相同?我对MVC的理解可能不正确,但在其他语言中,我通常只是在控制器中创建模型的实例,然后根据从控制器中提取的数据操作模型view@Alex没关系,看了之后我更明白了…除了mongoDB而不是MySQl,谢谢!是的,我确实使用了Angular,我的“控制器”的主要思想就是从Angular。。。谢谢你的链接!