how to read extjs data store

extjs, javascript

Solution

Below code worked for me :

var newproxy = new Ext4.data.proxy.Rest({
    url : request,
    headers : {
        },
    reader :  {
        type : 'json',
        root : 'user.book'
    }});

 // Typical Store collecting the Proxy, Reader and Writer together.
 var newstore = Ext4.create('Ext4.data.Store', {
     id : 'book',
     fields: ['bname'],
     restful : true, // <-- This Store is RESTful
     autoLoad : true,
     proxy : newproxy
 });

var book;
newstore.load();
newstore.each(function(rec) {
    book= rec.get('bname');
});

Problem

I want to read a particular value of an extjs data store and manipulate it locally. Response xml looks like : ``` <user><name>abc</name><surname>def</surname><book><bname>book1</bname></book></user> ``` My store will have just one user entry when response is received and i want to read 'bname' value. So far i have tried two approaches and both giving error. approach1: ``` Ext.define('user', { extend: 'Ext.data.Model', fields: [ 'name', 'surname'], hasMany: {model: 'Book', name: 'book'}, proxy: { type: 'rest', url : request, reader: { type: 'json', root: 'user'} } }); Ext.define('Book', { extend: 'Ext.data.Model', fields: [ 'name'], belongsTo: 'user' }); var userstore = Ext.create('Ext.data.Store', { model: "user" }); incidentstore.load({ callback: function() { var inc = userstore.first(); var bk = inc.getBook(); console.log(dev.get('bname')); } }); ``` Running above code gives error that 'Ext.define is not a function'. Approach2: ``` var proxy1 = new Jx.JxHttpProxyRest({ url: request, api : { read : { headers : { 'Accept' : APP + '.abc.def.usermanage.user+json;version=1' } } } }); var reader = new Ext.data.XmlReader( { rootProperty : 'user', record : 'book', id : 'id', }, [{ name : 'bname', mapping : 'book > bname'} ]); var writer = new Ext.data.XmlWriter( { encode : false }); var newstore = new Ext.data.Store( { id : 'book', restful : true, proxy : proxy1, remoteSort : true, reader : reader, writer : writer, autoload: true, listeners: { load: function() { console.log(newstore.data.first()); } } }); Ext.data.DataProxy.addListener('load', function(proxy, type, action, options, res) { console.log(res.responseText); }); newstore.load( { params : { start : 0, limit : myPageSize }, }); ``` Above code does not display anything on console. I am new to extjs and not sure how i can access 'bname' value from response. It would be great if someone can help

Original source