2015-11-19 4 views
-1

Написание моего первого приложения с NodeJS. У меня есть MongoDB w/two schemas "blurbs" и "users". Я хочу иметь возможность настраивать API как с помощью localhost/api/blurbs, так и с localhost/api/users. Однако оба URL-адреса возвращают информацию для «рекламных сообщений». Любая помощь очень ценится. Вот мой код:Невозможно отделить Express 4.13.1 Маршруты?

/models/db.js:

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

// Connect to the database 
var dbURI = 'mongodb:/\/localhost/scuba-noodle'; 
mongoose.connect(dbURI); 

// Creating the user schema 
var UserSchema = new Schema({ 
    "firstName": String, 
    "lastName": String, 
    "userId": String, 
    "avatar": Buffer, 
    "email": { type: String, unique: true }, 
    "created": {type: Date, default: Date.now }, 
    "loggedIn": Boolean, 
    "lastLogin": Date, 
    "noOfBlurbs": Number, 
    "blurbs": [null], 
    "votedOnBlurbs": [null], 
    "rating": Number 
}); 

// Exporting the user schema 
module.exports = mongoose.model('User', UserSchema); 

// Creating the blurb schema 
var BlurbSchema = new Schema ({ 
    "author": String, 
    "submitted": Date, 
    "votes": Number, 
    "trunk": String, 
    "text": String 
}); 

// Exporting the blurb schema 
module.exports = mongoose.model('Blurb', BlurbSchema); 

// Disconnect from the DB on App termination 
process.on('SIGINT', function() { 
    mongoose.connection.close(function() { 
    console.log("Mongoose disconnected through app termination"); 
    process.exit(0); 
    }); 
}); 

/routes/user.js:

var express = require('express'), 
    mongoose = require('mongoose'), 
    router = express.Router(), 
    User = require('../models/db'); 

router.use(function(req, res, next) { 
    console.log("Incoming request..."); 
    next(); 
}); 

router.route('/') 
    // POST 
    .post(function(req, res){ 
    var user = new User(); 
    user.firstName = req.body.firstName; 
    user.lastName = req.body.lastName; 
    user.userName = req.body.userName; 
    user.avatar = req.body.avatar || null; 
    user.email = req.body.email; 
    user.created = Date.now(); 
    user.loggedIn = false; 
    user.lastLogin = Date.now(); 
    user.noOfBlurbs = 0; 
    user.blurbs = [null]; 
    user.votedOnBlurbs = [null]; 
    user.rating = 0; 

    user.save(function (err) { 
     if (err) { res.send(err); } 
      res.json({ message: "User created" }); 
     }); 
     }) 
    // GET all 
    .get(function(req, res) { 
    User.find(function(err, users) { 
     if (err) { res.send(err); } 
     res.json(users); 
    }); 
    }); 

router.route('/:user_id') 
    //GET by ID 
    .get(function(req, res) { 
    User.findById(req.params.user_id, function(err, user) { 
     if (err) { res.send(err); } 
     res.json(user); 
    }); 
    }) 
    //PUT by ID 
    .put(function(req, res) { 
    User.findById(req.params.user_id, function(err, user) { 
     if (err) { res.send(err); } 
     user.firstName = req.body.firstName || user.firstName; 
     user.lastName = req.body.lastName || user.lastName; 
     user.userName = req.body.userName || user.userName; 
     user.avatar = req.body.avatar || user.avatar; 
     user.email = req.body.email || user.email; 

     user.save(function(err, user) { 
     if (err) { res.send(err); } 
     res.json({ message: "User update" }); 
     }); 
    }); 
    }) 
    // DELETE by ID 
    .delete(function(req, res) { 
    User.remove({ 
     _id: req.params.user_id 
    }, function(err, user) { 
     if (err) { res.send(err); } 
     res.json({ message: "Successfully Deleted" }); 
    }); 
    }); 

var userRouter = router; 
module.exports = userRouter; 

/routes/blurb.js:

var express = require('express'); 
var mongoose = require('mongoose'); 

var router = express.Router(); 
var Blurb = require('../models/db'); 

router.use(function(req, res, next) { 
    console.log("Incoming request..."); 
    next(); 
}); 

router.route('/') 
    // POST 
    .post(function(req, res) { 
    var blurb = new Blurb(); 
    blurb.author = req.body.author || "Anonymous"; 
    blurb.submitted = Date.now(); 
    blurb.votes = 0; 
    blurb.trunk = req.body.trunk || "Unspecified"; 
    blurb.text = req.body.text || "Empty"; 

    blurb.save(function (err) { 
     if(err) { res.send("Save Error: " + err); } 
     res.json({ message: "Blurb Created" }); 
    }); 
    }) 
    // GET all 
    .get(function(req, res) { 
    Blurb.find(function(err, blurbs) { 
     if (err) { res.send(err); } 
     res.json(blurbs); 
    }); 
    }); 

router.route('/:blurb_id') 
    // GET by ID 
    .get(function(req, res) { 
    Blurb.findById(req.params.blurb_id, function(err, blurb) { 
     if (err) { res.send(err); } 
     res.json(blurb); 
    }); 
    }) 
    // PUT by ID 
    .put(function(req, res){ 
    Blurb.findById(req.params.blurb_id, function(err, blurb){ 
     if (err) { res.send(err); } 
     blurb.author = req.body.author || blurb.author; 
     blurb.submittee = Date.now(); 
     blurb.votes = blurb.votes; 
     blurb.trunk = req.body.trunk || blurb.trunk; 
     blurb.text = req.body.text || blurb.text; 

     blurb.save(function(err) { 
     if (err) { res.send(err); } 
     res.json({ message: 'Blurb Updated' }); 
     }); 
    }); 
    }) 
    // DELETE by ID 
    .delete(function(req, res) { 
    Blurb.remove({ 
     _id: req.params.blurb_id 
    }, function(err, blurb) { 
     if (err) { res.send(err); } 
     res.json({ message: 'Successfully Deleted' }); 
    }); 
    }); 

var blurbRouter = router; 
module.exports = blurbRouter; 

И, наконец, server.js:

// Call packages 
var express = require('express'), 
    bodyParser = require('body-parser'), 
    mongoose = require('mongoose'); 

// Create the server 
var app = express(); 

// Configure bodyParser 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

// Setting the port 
var port = process.env.PORT || 8080; 

// Registering the routes 
app.use('/api/blurbs', require('./routes/blurb')); 
app.use('/api/users', require('./routes/user')); 

// Starting the server 
app.listen(port); 
console.log('Nodejs Server Listening on port ' + port); 

Если у вас есть идеи или предложения, я действительно ценю это!

+0

@inspired - Версия 4.13.1 – user2283234

ответ

1

Причины в том, что вы перезаписывание module.exports в db.js:

module.exports = mongoose.model('User', UserSchema); 

// ... 

module.exports = mongoose.model('Blurb', BlurbSchema); 

Так, так как последнее было последнее назначение, db.js будет экспортировать Blurb модели. Вы должны, вероятно, вместо того, чтобы сделать что-то вроде:

exports.User = mongoose.model('User', UserSchema); 
exports.Blurb = mongoose.model('Blurb', BlurbSchema); 

и изменить файлы маршрута соответствующим образом:

var User = require('../models/db').User; 

и

var Blurb = require('../models/db').Blurb; 
+0

Это сработало! Большое вам спасибо за помощь, я вижу проблему сейчас. – user2283234

Смежные вопросы