【发布时间】:2017-01-06 21:02:59
【问题描述】:
我正在创建一个 android 应用程序,该应用程序连接到使用 socket.io 的 node.js 服务器。
现在我没有任何问题,但我觉得有更好的方法来做到这一点。下面的代码根据用户所在的国家/地区/州/城市将用户添加到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'] };
});
【问题讨论】:
-
有点难以理解,但我注意到很多代码重复。尽量不要重复自己。
-
不应该在CodeReview上问这个吗?
标签: javascript node.js socket.io