« Return to Thread: data store

Re: data store

by Dustin Machi-2 :: Rate this Message:

Reply to Author | View in Thread

I agree that lots of work still needs to be done on making use of stores
easier and more robust.  Right now it can be too difficult to use in
what are simple case. However...

> Honestly I don't want to use a datastore to do it.  Seems like a
> complete waste of memory and CPU.

The fact is regardless of whether or not you have to declare a store or
even if a widget actually uses something called a store, you are using
one.  This doesn't necessarily mean a dojo.data store, but every widget
that visualizes some data set must be able to have access to a data set
that it understands how to access and view and potentially to manipulate
as well.

In the previous versions of dojo each widget handled its data on its
own.  This of course led to problems that the particular data set that
they knew how to manage didn't quite match up with what the user needed
or wanted.  Or they needed to be retrieved from the server in a lazy
loaded way.  Or lazy loading work, but not in the way that a particular
dev needed it to work.  dojo.data does nothing more than split that
functionality outside of the widget so stores could be defined in some
standard way that lets the developers write whatever code they might
like to access their server data, but still provides widgets a common
interface so they don't have to be rewritten, extended or whatever with
each new use case.

Now, bugs aside and not withstanding some adjustments that might be
needed to the dojo.data api's themselves, using stores should ultimately
reduce the number of instances of a piece of data because one store can
be used by multiple widgets.  It ultimately also requires less widget
code to be written and downloaded.

> However not using a datastore  does
> not appear to be an option.

Actually in some cases this is already the case, but as mentioned above
is only illusory. For example, the combobox widget can take normal
<option> tags as children.  However what happens in reality is that the
widget will then ingest that data and create the store on its own.
Having capabilities like this available across the full set of widgets
that use dojo data would go along way towards making some of the simple
cases simpler.  (

*on a side note for lurkers: I would say however that widgets that do
this should not automatically dojo.require() the store type they want to
use as you then have to get that code/store even if you don't want to
use it and that can be expensive.  I would prefer it to just throw an
error if you tried to use a widget in this way and hadn't included an
appropriate store.  It would also be preferable to allow usage like this
to specify which type of store would be created by default, though this
might not be practical in some circumstances.  Doing this allow
automatic creation, but if the rest of the app is using a different
store type, it doesn't require that store to be loaded.)

 So baring that, I want to populate a
> datastore with the above object without having to read it from the
> server.  I already have the data it was pulled from the server in a
> much more complex format and is being used for may things. the above
> sample is a derived subset of that data.
>
> what I'd love to do is this:
>
> dijit.form.FiteringSelect.store = pageJSON;
>

This won't work because that is passing a js object in and the filtering
select would be expecting that to be a store instance, not a js object.

> baring that I'd like to do this:
>
> store = new dojo.data.SomeKindOfStore( pageJSON )
> dijit.form.FilteringSelect.store = store;
>

This in general is correct, however i think in practical terms that
right now most data using widgets expect to have a store at creation
time.  So your stores would need to be created before the widget was
instantiate.

> What I don't want to do is go to the server for data I already have.
>
You don't have to go to the server for the data you already have.
ItemFileReadStore takes a set of data, formatted in its special way, and
makes it available locally.  You could create your stores right at the
beginning of your app for example (not in addOnLoad() and before the
<body>) and that store could be avialable to anything  you either markup
or programmatically create later.


Dustin

_______________________________________________
FAQ: http://dojotoolkit.org/support/faq
Book: http://dojotoolkit.org/docs/book
Forums: http://dojotoolkit.org/forum
Dojo-interest@...
http://dojotoolkit.org/mailman/listinfo/dojo-interest

 « Return to Thread: data store