임시 저장소 활용해서 쇼핑앱 같은거에 장바구니를 구현해보려고 하는데요.
이때 한 핸드폰 기기로 여러 사용자가 접속한다고 했을때, 서로 각각의 데이터가 다르게 저장이 되야 하는데
저장소에서 같은 저장소명으로 접근하다보니까, 서로의 장바구니 아이템이 겹치는 문제가 생겨서요.
처음엔은 storage 명을 storage_a, storage_b, storage_c .. 이런식으로 a,b,c 사용자별로 storage 객체명을 다르게 접근하게 하면 딱이다 싶었는데, 변수명 자체를 변수화 할 수가 없어서, 이건 안되겠다 싶었고,
하나 또 다른 방법을 생각한게
먼저 스트링 리스트 변수를 만들어서 임시로 거기에 담은 다음에,
List<String> items = [];
사용자가 같은 사용자면, 리스트에 add 해서 아이템을 추가하고, 사용자가 바뀌면 리스트를 먼저 지우고, 새로 아이템을 add 하고,
그걸 가지고 다시
스토리지에 담는데, 이때, 스토리지 만들때 안에 uid 를 매개변수로 가져가서, uid 로 데이터 구분할 수 있게 하구요.
storage.setString('store_${uid}', uid);
storage.setStringList('store_${uid}_items', items);
스토리지가 있는지, 스토리지가 없는지?
스토리지가 있다면, 그안에 uid 가 현재 접속한 uid 와 같은지?
스토리지가 있고, uid 가 같다면, 거기에 아이템 추가만 하면 되고, 스토리지가 없으면 새로 스토리지 만들고, 있어도 uid 가 다르다면
uid 가 다른 정보로 스토리지를 셋팅해야 하고... 이렇게 생각을 했었는데요.
리스트에서 add 하는 것처럼 스토리지에서는 add 할 수가 없고, 그냥 set 으로 통으로 바꾸니까,
문제가 사용자 a 가 제품을 담고, 다시 b 가 로그인 해서 제품을 담은거까지는 구분이 되는데,
다시 여기서 사용자 a가 들어와서 이어서 담을라고 하면, 앞에서 items에서 사용자가 바뀌면 clear() 하게 해놔서,
a 가 담았던 아이템은 다 날라가고, 다시 처음부터 셋팅을 해야하더라구요. 그렇다고 clear() 을 안하면,
a 가 고른 아이템과 b 가 고른 아이템이 합쳐져서 문제이구요.
질문이 길어졌는데 정리하자면
1. storage 명을 변수화해서 매개변수 값으로 storage_사용자id 이런식으로 만들 순 없을지?
2. storage.setStringList 할 때, 통으로 바꾸는게 아니라, 기존에 값이 있으면 이어서 add 만 할 수는 없는지?
3. 그밖에 다른 좋은 방법이 없을지...?
문의 드립니다. 감사합니다.