如何路由CRUD操作?

我有以下代码为node.js,express和MongoDB连接使用mongoose。

首先,我尝试使用一个名为server.js的文件,它没有任何expression式。 但是现在我想用快件来做,但不起作用。

这只是简单的程序,在mongo数据库中读取和创build示例Bear对象。

这里是我的app.js

 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); //var routes = require('./routes/index'); var users = require('./routes/users'); var mongoose = require('mongoose'); var db = mongoose.connect('localhost:27017/nodetest1'); //var Bear = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); var port = process.env.PORT || 8080; // Make our db accessible to our router app.use(function(req,res,next){ req.db = db; next(); }); // ROUTES FOR OUR API // ============================================================================= var router = express.Router(); // get an instance of the express Router router.use(function(req,res,next){ console.log('something is happening'); next(); }); // test route to make sure everything is working (accessed at GET http://localhost:8080/api) router.get('/', function(req, res) { res.json({ message: 'hooray! welcome to our api!' }); }); // more routes for our API will happen here // REGISTER OUR ROUTES ------------------------------- // all of our routes will be prefixed with /api app.use('/', router); app.use('/bears', users); // START THE SERVER // ============================================================================= app.listen(port); console.log('Magic happens on port ' + port); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 

这里是我的users.js

 var express = require('express'); var router = express.Router(); var Schema = mongoose.Schema; var BearSchema = new Schema({ name: String }); module.exports = mongoose.model('Bear',BearSchema); router.route('/bears') // create a bear (accessed at POST http://localhost:8080/api/bears) .post(function(req, res) { var bear = new Bear(); // create a new instance of the Bear model bear.name = req.body.name; // set the bears name (comes from the request) // save the bear and check for errors bear.save(function(err) { if (err) res.send(err); res.json({ message: 'Bear created!' }); }); }); module.exports = router; 

请告诉我如何路由CRUD操作。

你不能在一个文件中有两个module.exports。 位于文件底部的一个将重写所有其他文件。

你需要两个文件,像

控制器/ users.js

 var express = require('express'); var router = express.Router(); router.route('/bears') // create a bear (accessed at POST http://localhost:8080/api/bears) .post(function(req, res) { var bear = new Bear(); // create a new instance of the Bear model bear.name = req.body.name; // set the bears name (comes from the request) // save the bear and check for errors bear.save(function(err) { if (err) res.send(err); res.json({ message: 'Bear created!' }); }); }); module.exports = router; 

车型/ user.js的

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BearSchema = new Schema({ name: String }); module.exports = mongoose.model('Bear',BearSchema); 

在你的app.js中,你可以这样做:

 var user = require('controllers/user'); app.use('/users', user); 

现在terminal在听/users/bears

如果你需要你的模型,只需要加载它

 var userModel = mongoose.model('User'); 

我build议下载并运行这个模板 ,当你看到它们是如何实现的时候,更容易添加新的特性