From: Tab Atkins Jr. [mailto:[email protected]] Sent: Wednesday, November 10, 2010 1:50 PM
>> On Wed, Nov 10, 2010 at 1:43 PM, Pablo Castro >> <[email protected]> wrote: >> > >> > From: [email protected] [mailto:[email protected]] >> > On Behalf Of [email protected] >> > Sent: Monday, November 08, 2010 5:07 PM >> > >> >>> So what happens if trying save in an object store which has the following >> >>> keypath, the following value. (The generated key is 4): >> >>> >> >>> "foo.bar" >> >>> { foo: {} } >> >>> >> >>> Here the resulting object is clearly { foo: { bar: 4 } } >> >>> >> >>> But what about >> >>> >> >>> "foo.bar" >> >>> { foo: { bar: 10 } } >> >>> >> >>> Does this use the value 10 rather than generate a new key, does it throw >> >>> an >> >>> exception or does it store the value { foo: { bar: 4 } }? >> > >> > I suspect that all options are somewhat arbitrary here. I'll just propose >> > that we error out to ensure that nobody has the wrong expectations about >> > the implementation preserving the initial value. I would be open to other >> > options except silently overwriting the initial value with a generated >> > one, as that's likely to confuse folks. >> >> It's relatively common for me to need to supply a manual value for an >> id field that's automatically generated when working with databases, >> and I don't see any particular reason that my situation would change >> if using IndexedDB. So I think that a manually-supplied key should be >> kept. That would be okay with me. One bit of fine-print on this one is that if you're calling store.add() with an explicit key then you may get a unique constraint error (which would never happen with a generator if you never provided your own keys). Also, did we settle for having put() never adding a new record if one didn't exist? If put() can create a record, then things still work but become a bit more elaborate in that put() would create a new record either if the key is not present in the object or if it's present but the value doesn't exist in the database, while it would update a record if the value was present and it existed as a key in the store. -pablo
