Я создаю приложение для Android, которое подключается к моему серверу node.js, который использует socket.io.Есть ли лучший способ добавить пользователя в объект/массив
Теперь у меня нет никаких проблем, но я чувствую, что есть лучший способ сделать это. Приведенный ниже код добавляет пользователя к переменной userPool
на основе местоположения пользователя/страны/города пользователя.
var userPool = {};
// Adds the user to the pool object
socket.on('add or update user to pool', function(data) {
if (userPool.hasOwnProperty(data['country'])) {
if (userPool[data['country']].hasOwnProperty(data['state'])) {
if (userPool[data['country']][data['state']].hasOwnProperty(data['city'])) {
if (userPool[data['country']][data['state']][data['city']].hasOwnProperty(data['user_type'])) {
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
else {
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']][data['state']] = {};
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
}
else {
userPool[data['country']] = {};
userPool[data['country']][data['state']] = {};
userPool[data['country']][data['state']][data['city']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']] = {};
userPool[data['country']][data['state']][data['city']][data['user_type']][socket.id] = data;
}
if (!socket.hasOwnProperty('userInfo'))
socket['userInfo'] = { 'country': data['country'], 'state': data['state'], 'city': data['city'], 'user_type': data['user_type'] };
});
Немного трудно следовать, но я заметил много кода повторения. Как бы вы ни старались, постарайтесь не повторять себя. – deweyredman
Не следует ли это задавать в [CodeReview] (http://codereview.stackexchange.com/)? – Xufox