아 이거지같은 것때문에 장장 5시간을 쓰니까 너무 허무하다.
보통, 몽고디비와 연결되어있는 node.js에서 데이터를 가져오게 되는 구문에서 다음과 같이 설정하게 된다.
app.get('/list', function(request, response, error){ Shop.find(function(error, shop) { response.setHeader('Content-Type', 'text/json'); response.send(request.query["callback"] + '({"records":' + JSON.stringify(shop) + '});'); }); });//end list()
또한 Model 과 Store는 다음과 같이 쓰게 되는데,
Ext.define('attack.model.Shop', { extend : 'Ext.data.Model', config : { fields: ['_id', 'name', 'category','desc', 'time', 'lng', 'lat' ], }, });
Ext.define('attack.store.ShopStore', { extend: 'Ext.data.Store', requires: [ 'attack.model.Shop' ], config: { autoLoad: true, model: 'attack.model.Shop', storeId: 'ShopStore', proxy: { type: 'jsonp', url: 'http://localhost:3000/list', reader: { type: 'json', idProperty: '_id', rootProperty: 'records', useSimpleAccessors: true } } } });
여기서 절대 바꾸지 말하야 할것이 있다.
저 rootProperty: 'records' 에서 바로 records이다. 같은 맥락으로 response.send에서도 records는 절대 다른걸로 바꾸면 안된다.
분명 이러한 식으로 개발자 직관에서 벗어나게 함으로써 엿먹이고 삽질하는게 의도된것은 아니더라도 데이터를 '' 으로 싸잡히는 records로 한정지은것은 문제가 있다. 이에대한 것은
http://docs.sencha.com/touch/2.4/2.4.2-apidocs/#!/api/Ext.data.writer.Json-cfg-rootProperty
위의 도큐먼트에서도 확연하게 찾아볼수 있다.
이제 다음 구문으로 보면 제대로 적당하게 작동하는것을 볼수있다.
var store = Ext.getStore('ShopStore'); console.log(store);
참고로, rootproperty없이는 데이터를 한꺼번에 가져오기가 조금 불편하다.
'모바일 > Hybrid' 카테고리의 다른 글
센차터치 네비게이션 뷰(navigationView) 툴바에 버튼달기 (0) | 2015.08.14 |
---|---|
센차터치에서 바로 원격 데이터 뽑아오기 (0) | 2015.08.10 |
express 몽고DB와 연결시 store이름 및 collection이름 주의점 (0) | 2015.08.01 |
몽고DB + 센차터치 + nodeJS 구축 (0) | 2015.07.28 |
센차터치 구글맵 초간단 이용하기 (0) | 2015.07.25 |