2014-04-17 2 views
0

일부 코드를 리팩토링하려고합니다. 이와 같이, (아무것도 포함하지 않음)의 서브 필드를 임의로 설정할 수있을 수여러 배열 필드를 매개 변수로 사용합니다.

this.users[user][field] = data ; 

하는 것으로 : 모든 코드베이스 함께이 같은 사용자 관련 정보를 저장하는 코드를

this.users[user][field][subfield1][subfield2] = data ; 

이러한 정보는 다음과 같이 검색됩니다.

var result = this.users[user][field] ; 

실제 데이터는 Redis에 저장됩니다. 이것을 준비하려면 두 가지 기능, 즉 function storeUserData(user, fields, data)function retrieveUserData(user, field)에 대한 액세스를 리팩토링하고 싶습니다.

필드가 하나만 있으면 쉽게 할 수 있습니다. 하지만 임의의 수의 하위 필드를 허용하는 두 가지 기능을 작성하려면 어떻게해야합니까?

편집 : 장기 목표는 redis 키와 node.js 배열의 차이를 흐리게하는 것입니다. 그런 식으로 예를 들어 노드 서브 필드에 액세스 할 수 있습니다 : 'users.user.id' 또한이 같은 redis 있음 : users.user.*.id. 그것은 가능한 것 같습니까?

답변

0

fields 인수를 Array로 전달할 수 있습니다. 그런 다음 읽기 기능의 필드 상상 //

기능 retrieveUserData (사용자, 필드) {처럼

을 무언가를하는 것은 [ '필드', 'subfield1']

var에 fieldVariable = this.users이다 사용자 ] for (f = 0; f < fields.length; ++ f) { fieldVariable = fieldVariable [fields [f]]; }

이 라인은 fieldVariable this.users [사용자]를 가리 // [ '필드'] [ 'subfield1']

창 fieldVariable; }

희망 하시겠습니까?

관련 문제