joins system done inside the travel model (with join and unjoin implemented
idoctnef idoctnef@openmailbox.org
Thu, 06 Oct 2016 15:12:08 +0200
7 files changed,
58 insertions(+),
19 deletions(-)
M
config.js
→
config.js
@@ -1,9 +1,8 @@
module.exports = { - - /*'secret': process.env.SECRET, + /*'secret': process.env.SECRET,// production version 'database': process.env.MONGO_DSN,*/ - 'secret': process.env.SECRET, - 'database': process.env.MONGO_DSN, + 'secret': 'secretfortoken',// local version + 'database': 'mongodb://localhost/comunalcar', "port" : process.env.PORT || 3000 };
M
controllers/travelController.js
→
controllers/travelController.js
@@ -107,22 +107,25 @@
/* join */ exports.addJoin = function(req, res) { - var join = new joinModel({ - travelId: req.params.travelId, - joinedUserId: req.body.joinedUserId, - joinedUsername: req.body.joinedUsername, - acceptedUserId: req.body.acceptedUserId, - joinedAvatar: req.body.joinedAvatar - }); + travelModel.findById(req.params.travelId, function(err, travel){ + console.log(travel.title); + var join = { + joinedUserId: req.body.joinedUserId, + joinedUsername: req.body.joinedUsername, + acceptedUserId: req.body.acceptedUserId, + joinedAvatar: req.body.joinedAvatar + }; + travel.joins.push(join); - join.save(function(err, join) { - if(err) return res.send(500, err.message); - res.status(200).jsonp(join); + travel.save(function(err, travel) { + if(err) return res.send(500, err.message); + res.status(200).jsonp(travel); + }); }); }; exports.doUnjoin = function(req, res) { - joinModel.find({ + /*joinModel.find({ travelId: req.params.travelId }, function(err, joins) { for(var i=0; i<joins.length; i++)@@ -137,6 +140,20 @@ })
} } + });*/ + travelModel.findById(req.params.travelId, function(err, travel){ + for(var i=0; i<travel.joins.length; i++) + { + if(travel.joins[i].joinedUsername==req.body.joinedUsername) + { + travel.joins.splice(i, 1); + } + } + + travel.save(function(err, travel) { + if(err) return res.send(500, err.message); + res.status(200).jsonp(travel); + }); }); };
M
models/travelModel.js
→
models/travelModel.js
@@ -17,7 +17,19 @@ icon: { type: String },
phone: { type: Number }, telegram: { type: String }, collectivized: { type: Boolean }, - modality: { type: String } //if is an offering travel or asking for travel + modality: { type: String }, //if is an offering travel or asking for travel + joins: [{ + joinedUserId: { type: String }, + joinedUsername: { type: String }, + acceptedUserId: { type: String }, + joinedAvatar: { type: String } + }], + comments: [{ + commentUserId: { type: String }, + commentUsername: { type: String }, + comment: { type: String }, + commentAvatar: { type: String } + }] }) module.exports = mongoose.model('travelModel', travelSchema);
M
models/userModel.js
→
models/userModel.js
@@ -1,9 +1,11 @@
var mongoose = require('mongoose'), Schema = mongoose.Schema; +var mongooseUniqueValidator = require('mongoose-unique-validator'); + var userSchema = new Schema({ - username: { type: String }, + username: { type: String, unique: true }, password: { type: String }, description: { type: String }, avatar: { type: String },@@ -16,4 +18,6 @@ value: { type: Number },
comment: { type: String } }] }) + +userSchema.plugin(mongooseUniqueValidator); module.exports = mongoose.model('userModel', userSchema);
M
package.json
→
package.json
@@ -13,6 +13,7 @@ "jsonwebtoken": "latest",
"method-override": "^2.1.2", "mongoose": "latest", "morgan": "latest", - "md5": "latest" + "md5": "latest", + "mongoose-unique-validator": "^1.0.2" } }
M
server.js
→
server.js
@@ -122,9 +122,14 @@ apiRoutes.route('/travels/:id')
.put(travelCtrl.updateTravel) .delete(travelCtrl.deleteTravel); -apiRoutes.route('/travels/join/:travelId') +/*apiRoutes.route('/travels/join/:travelId') .post(travelCtrl.addJoin); apiRoutes.route('/travels/unjoin/:travelId') + .post(travelCtrl.doUnjoin);*/ + +apiRoutes.route('/travels/:travelId/join') + .post(travelCtrl.addJoin); +apiRoutes.route('/travels/:travelId/unjoin') .post(travelCtrl.doUnjoin); apiRoutes.route('/travels/comment/:travelId')