2016-03-21 34 views
2

node.js, ifade ve Mongoose kullanarak MongoDB bağlantısı için aşağıdaki kod var.CRUD işlemlerini ekspresde nasıl yönlendirilir?

İlk olarak, server.js adında tek bir dosya üzerinde çalışıyorum ve açık olmadan çalışıyor. Ama şimdi bunu ifade etmek istiyorum ama çalışmıyor.

Yalnızca mongo veritabanındaki örnek Bear nesnelerini okuyan ve oluşturan basit bir programdır.

İşte bu benim 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; 

söyle nasıl rota CRUD işlemleri için lütfen burada benim 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; 

ve.

+0

Lütfen hangi yüzeye baktığınızı belirtin. Lütfen hatayı buraya yorumlayın. Böylece hata ayıklayabilirim. –

cevap

2

Tek bir dosyada iki adet modül.export bulunamaz. Dosyanın en altındaki, diğerleri yeniden yazılıyor.

Sen bunu yapabilirsiniz, iki dosya,

kontrolörleri gibi bir şey/

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; 

modeller users.js/senin app.js ise

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var BearSchema = new Schema({ 
    name: String 
}); 

module.exports = mongoose.model('Bear',BearSchema); 

user.js gerekir:

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

It en Eğer bir yere modelinizi gerekiyorsa dpoint şimdi /users/bears

dinlemeli sadece yeni özellikler eklemek için daha kolay, ben indirip bu template çalıştırmak öneriyoruz

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

ile yükleyebilirsiniz, zaman Gördünüz mü, zaten nasıl uygulandıkları

İlgili konular