Hallo, ich bin selbst lernen, MEAN Stack und habe eine Frage, wie Sie die Menge von, wenn Checks in meinem Code zu reduzieren.wie ich die Menge der if-Anweisungen reduzieren kann
Grundsätzlich funktioniert der Benutzer füllt seine/ihre Einstellungen Seite dann klickt geben Sie ein, wir senden Sie die Daten an den Server, damit wir Mongo aktualisieren können.
die einzige Möglichkeit, dass ich dies zu arbeiten scheint, dass der Benutzer bestimmte Felder bearbeiten kann und nicht alle ist, um sicherzustellen, dass die Daten an den Server nicht gleich null gesendet werden, aber sicherlich muss es einen besseren Weg geben dann durch Ausführen von if-Anweisungen für jedes Feld.
der Code in Frage ist
//user.username = req.body.username;
if (age != null) {
user.age = age;
}
if (bio != null) {
user.bio = bio;
}
if (location != null) {
user.location = location;
}
if (team != null) {
user.team = team;
}
if (tags != null) {
user.tags = tags;
}
if (email != null) {
user.email = email;
}
Client-Seite Code
$scope.savesettings = function(provider){
var theUser = JSON.parse(localStorage.getItem("User-Data"));
var user = theUser["_id"];
var request = {};
var request = {
user: user,
username: $scope.settings_username,
email: $scope.settings_email,
age: $scope.settings_age,
location: $scope.settings_location,
team: $scope.settings_team,
bio:$scope.settings_bio,
profilebanner: $scope.settings_profilebanner,
avatar: $scope.settings_avatar
};
console.log(request);
//send to server
$http.put('api/social/updatesettings', request).success(function(response){
alertify.success("Your settings have been successfully saved.");
localStorage.clear();
localStorage.setItem('User-Data', JSON.stringify(response));
}).error(function(error){
alertify.error("Hmmm an issue has occured.");
});
};
Servercode
var User = require('../../datasets/userModel');
module.exports.updatesettings = function (req, res) {
var age = req.body.age;
var bio = req.body.bio;
var location = req.body.location;
var team = req.body.team;
var tags = req.body.tags;
var email = req.body.email;
var profilebanner = req.body.profilebanner;
var avatar = req.body.avatar;
User.findOne({_id: req.body.user}, function (err, user){
//user.username = req.body.username;
if (age != null) {
user.age = age;
}
if (bio != null) {
user.bio = bio;
}
if (location != null) {
user.location = location;
}
if (team != null) {
user.team = team;
}
if (tags != null) {
user.tags = tags;
}
if (email != null) {
user.email = email;
}
user.save(function(err){
if (err){
console.log(err);
res.status(500).send();
//res.json(user);
} else {
console.log("success");
res.json(user);
}
})
});
};
Wo zuweisen Sie die Variablen aus? Zum Beispiel "if (age! = Null)", woher kommt "age"? – chridam
Haben Sie darüber nachgedacht, alle Felder in einem Array zu verpacken und dann die Methode forEach() auszuführen, führt dies zu weniger Code, da Sie nur eine if-Anweisung haben. –
wird es jetzt in Mate hinzufügen –