joins system done inside the travel model (with join and unjoin implemented

This commit is contained in:
idoctnef
2016-10-06 15:12:08 +02:00
parent 747b52cdcf
commit a51b917484
7 changed files with 58 additions and 19 deletions

View File

@@ -15,6 +15,7 @@ frontend app code: https://github.com/idoctnef/collectivecarApp
**Backend and Frontend:** **Backend and Frontend:**
``` ```
-signup user --> done -signup user --> done
-signup unique username --> done
-loggin user --> done -loggin user --> done
-update user profile --> done -update user profile --> done
-create new travel --> done -create new travel --> done

View File

@@ -1,9 +1,8 @@
module.exports = { module.exports = {
/*'secret': process.env.SECRET,// production version
/*'secret': process.env.SECRET,
'database': process.env.MONGO_DSN,*/ 'database': process.env.MONGO_DSN,*/
'secret': process.env.SECRET, 'secret': 'secretfortoken',// local version
'database': process.env.MONGO_DSN, 'database': 'mongodb://localhost/comunalcar',
"port" : process.env.PORT || 3000 "port" : process.env.PORT || 3000
}; };

View File

@@ -107,22 +107,25 @@ exports.deleteTravel = function(req, res) {
/* join */ /* join */
exports.addJoin = function(req, res) { exports.addJoin = function(req, res) {
var join = new joinModel({ travelModel.findById(req.params.travelId, function(err, travel){
travelId: req.params.travelId, console.log(travel.title);
joinedUserId: req.body.joinedUserId, var join = {
joinedUsername: req.body.joinedUsername, joinedUserId: req.body.joinedUserId,
acceptedUserId: req.body.acceptedUserId, joinedUsername: req.body.joinedUsername,
joinedAvatar: req.body.joinedAvatar acceptedUserId: req.body.acceptedUserId,
}); joinedAvatar: req.body.joinedAvatar
};
travel.joins.push(join);
join.save(function(err, join) { travel.save(function(err, travel) {
if(err) return res.send(500, err.message); if(err) return res.send(500, err.message);
res.status(200).jsonp(join); res.status(200).jsonp(travel);
});
}); });
}; };
exports.doUnjoin = function(req, res) { exports.doUnjoin = function(req, res) {
joinModel.find({ /*joinModel.find({
travelId: req.params.travelId travelId: req.params.travelId
}, function(err, joins) { }, function(err, joins) {
for(var i=0; i<joins.length; i++) for(var i=0; i<joins.length; i++)
@@ -137,6 +140,20 @@ exports.doUnjoin = function(req, res) {
} }
} }
});*/
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);
});
}); });
}; };

View File

@@ -17,7 +17,19 @@ var travelSchema = new Schema({
phone: { type: Number }, phone: { type: Number },
telegram: { type: String }, telegram: { type: String },
collectivized: { type: Boolean }, 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); module.exports = mongoose.model('travelModel', travelSchema);

View File

@@ -1,9 +1,11 @@
var mongoose = require('mongoose'), var mongoose = require('mongoose'),
Schema = mongoose.Schema; Schema = mongoose.Schema;
var mongooseUniqueValidator = require('mongoose-unique-validator');
var userSchema = new Schema({ var userSchema = new Schema({
username: { type: String }, username: { type: String, unique: true },
password: { type: String }, password: { type: String },
description: { type: String }, description: { type: String },
avatar: { type: String }, avatar: { type: String },
@@ -16,4 +18,6 @@ var userSchema = new Schema({
comment: { type: String } comment: { type: String }
}] }]
}) })
userSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('userModel', userSchema); module.exports = mongoose.model('userModel', userSchema);

View File

@@ -13,6 +13,7 @@
"method-override": "^2.1.2", "method-override": "^2.1.2",
"mongoose": "latest", "mongoose": "latest",
"morgan": "latest", "morgan": "latest",
"md5": "latest" "md5": "latest",
"mongoose-unique-validator": "^1.0.2"
} }
} }

View File

@@ -122,9 +122,14 @@ apiRoutes.route('/travels/:id')
.put(travelCtrl.updateTravel) .put(travelCtrl.updateTravel)
.delete(travelCtrl.deleteTravel); .delete(travelCtrl.deleteTravel);
apiRoutes.route('/travels/join/:travelId') /*apiRoutes.route('/travels/join/:travelId')
.post(travelCtrl.addJoin); .post(travelCtrl.addJoin);
apiRoutes.route('/travels/unjoin/:travelId') apiRoutes.route('/travels/unjoin/:travelId')
.post(travelCtrl.doUnjoin);*/
apiRoutes.route('/travels/:travelId/join')
.post(travelCtrl.addJoin);
apiRoutes.route('/travels/:travelId/unjoin')
.post(travelCtrl.doUnjoin); .post(travelCtrl.doUnjoin);
apiRoutes.route('/travels/comment/:travelId') apiRoutes.route('/travels/comment/:travelId')