- From: Jeremy Orlow <jorlow@chromium.org>
- Date: Wed, 4 Aug 2010 18:53:10 +0100
- To: Shawn Wilsher <sdwilsh@mozilla.com>
- Cc: public-webapps WG <public-webapps@w3.org>
- Message-ID: <AANLkTikfGx-FAOqVTwgTR34-EUtPCfhD6jyQ2W-1TogM@mail.gmail.com>
On Wed, Aug 4, 2010 at 6:33 PM, Shawn Wilsher <sdwilsh@mozilla.com> wrote:
> On 8/4/2010 8:42 AM, Jeremy Orlow wrote:
>
>> In the IndexedDB spec, there are two ways to create a transaction. One is
>> explicit (by calling IDBDatabase.transaction()) and one is implicit (for
>> example, by calling IDBDatabase.objectStore.get("someKey")). I have
>> questions about the latter, but before bringing these up, I think it might
>> be best to give a bit of background (as I understand it) to make sure
>> we're
>> all on the same page:
>>
>> If I recall correctly, the original proposal from us basically said that
> IDBDatabase.objectStore("foo", [mode]) was just a shortcut for
> IDBDatabase.transaction("foo", [mode]).getObjectStore("foo"); I'm not sure
> if putting some text like that would help make things clearer though.
>
Whoa....transaction() is synchronous?!? Ok, so I guess the entire premise
of my question was super confused. :-)
....But I'm not sure I like that at all since it means that I will have to
open at least one object store every time I do any transaction. I.e. I
can't save my favorite object stores and indexes to variables and then use
them freely within transactions, which is something I expect most users will
want want to do.
Having a cute shortcut to cut down on one async call per transaction might
be a good idea. But forcing me to call .objectStore() (and possibly
.index() or others) for the first operation of every transaction seems
sub-optimal. I can double check with some "real" web developers around
Google, but I'm pretty sure they'll much rather make an asynchronous call to
start a transaction to get back execution within an IDBTransactionEvent
context rather than having to do repeated objectStore() and .index() calls
to start every single transaction.
And the more I think about this, the more I'm skeptical that any sort
of synchronous transaction starting code is worth the complicated semantics.
I mean, in reality, it saves very little code. And although it makes
sample code a bit prettier to look at (I believe this was one of the
original selling points), I think it's going to confuse developers more than
it'll help them--in the long run.
J
Received on Wednesday, 4 August 2010 17:53:59 UTC