If I run the following code:

---------------------------------------------------------------------------------
<cfset local.myCountry = CreateObject
("component","model.country.Country").init
(countryCode="DE",tld="de",googleAnalyticsAccountNr="UA-8664183-3",verifyV1="yYX5DacOjdbms/
rvqM9jhPpwLMHVuaFUf53eUGCu1pw=") />
<cfset local.myGoogleKey = GoogleWrite(local.myCountry,"Country") />
Generated GoogleKey = #local.myGoogleKey#<br>

<cfset aCountries = GoogleQuery('select from Country') />
Number of Country objects in datastore = #ArrayLen(aCountries)#<br>

<cfset local.myCountry2 = CreateObject
("component","model.country.Country").init
(countryCode="GE",tld="ge",googleAnalyticsAccountNr="RR-8664183-3",verifyV1="aaX5DacOjdbms/
rvqM9jhPpwLMHVuaFUf53eUGCu1pw=") />
<cfset local.myGoogleKey2 = GoogleWrite
(local.myCountry2,"Country",local.myGoogleKey) />
Generated GoogleKey2 = #local.myGoogleKey2#<br>

<cfset aCountries2 = GoogleQuery('select from Country') />
Number of Country objects in datastore = #ArrayLen(aCountries2)#<br>
---------------------------------------------------------------------------------


I get the following result:


---------------------------------------------------------------------------------
Generated GoogleKey = agZvd296em9yDgsSB2NvdW50cnkY4gEM
Number of Country objects in datastore = 1
Generated GoogleKey2 =
agZvd296em9yLQsSB2NvdW50cnkiIGFnenZkMjk2ZW05eWRnc3NiMm52ZHc1MGNua3k0Z2VtDA
Number of Country objects in datastore = 2
---------------------------------------------------------------------------------



On Nov 16, 10:42 pm, Rainer Schreiber <[email protected]>
wrote:
> I get a key like 'agZvd296em9yDgsSB2NvdW50cnkYzQEM'
>
> 2009/11/16 Bassil Karam <[email protected]>
>
> > Rainer,
>
> > What do you get for GoogleKey when you do 'GoogleKey =
> > GoogleWrite (myObj,myKind)'?
>
> > Baz
>
> > On Mon, Nov 16, 2009 at 1:13 PM, Rainer <[email protected]> wrote:
>
> >> Good point Baz:
> >> At the moment I use GoogleWrite(MyObj,getMetaData
> >> (MyObj).name,'MyKey123'). Why must I give the name of my object as an
> >> argument, when the function GoogleWrite should be able to fetch it
> >> itselve from the first argument MyObj?
>
> >> I furthermore must recall my latest blog here: keyName NOT EQUALS
> >> googleKey!!! I still think that the implementation of the unique keys
> >> of objects in the datastore is confusing!
>
> >> First of all, you can NOT use the 'GoogleKey' which is generated by
> >> the function 'GoogleWrite'. If you try 'GoogleKey = GoogleWrite
> >> (myObj,myKind)' and in a next request you use the GoogleKey to do an
> >> update like 'GoogleKey2 = GoogleWrite(myObj,myKind,GoogleKey)', there
> >> will be 2 objects in the datastore, and 'GoogleKey2' NOT equals
> >> 'GoogleKey'!
>
> >> Secondly, if you generate a unique key yourselve (f.i. myUniqueKey =
> >> CreateUUID()), you must store this unique key as a property in your
> >> object in order to be able to update this object in the datastore. Let
> >> me explain: I save a new object to the datastore with 'GoogleWrite
> >> (myObj,myKind,myUniqueKey)'. In a next request, I must read
> >> myUniqueKey from a (listed) object, in order to be able to update the
> >> object in the datastore by doing a 'GoogleWrite
> >> (myObj,myKind,myUniqueKey)'. I think that's really stupid, if there's
> >> already a GoogleKey!
>
> >> And now I am back at my first point, that you can NOT use the
> >> GoogleKey!
>
> >> So, what I am trying to say is that the idea of having a GoogleKey is
> >> really great, because you would not have to store a unique key in your
> >> object. But that only works if you can first do a GoogleKey =
> >> GoogleWrite(myObj) and than later on use this GoogleKey to do a
> >> GoogleWrite(myObj,GoogleKey), and NOT GoogleWrite(myObj,keyName)!!
>
> >> Vince, could you please respond to this post and let me know what you
> >> think, I would really appreciate that.
>
> >> Cheers,
>
> >> Rainer.
>
> >> On Nov 16, 8:55 pm, Bassil Karam <[email protected]> wrote:
> >> > My pleasure :)
>
> >> > One suggestion I would make to Vince is to reverse the positions of the
> >> > attributes "kind" and "keyName" and to not make "kind" required if
> >> "keyName"
> >> > is specified. For example, if I wanted to save an object, I could do:
>
> >> > googleWrite(MyObj);
>
> >> > This will automatically populate the kind and the keyName, but if I had
> >> my
> >> > own key name, it seems I should be able to simply provide it:
>
> >> > googleWrite(MyObj, 'MyKeyName');
>
> >> > With the "kind" automatically populated as before. Why should I have to
> >> now
> >> > specify it just because I have a key?
>
> >> > Similarly if you invoke googleWrite on the component itself:
>
> >> > MyObj.googleWrite('MyKeyName')
>
> >> > I think keyname is going to be specified MUCH more often than kind and
> >> > should therefore precede kind in the attribute list and also not be tied
> >> to
> >> > it.
>
> >> > Just some thoughts,
> >> > Baz
>
> >> > On Mon, Nov 16, 2009 at 11:17 AM, Rainer <[email protected]>
> >> wrote:
>
> >> > > Thanks Baz, that one helped me out.
>
> >> > > I didn't get it into my grey cells that keyName = googleKey. Of
> >> > > course, it's not a problem to use a kind, but I didn't know that you
> >> > > can use a GoogleKey as a KeyName to update an object with GoogleWrite.
>
> >> > > Great, let's put my model together this night!
>
> >> > > Thanks again Baz.
>
> >> > > Rainer.
>
> >> > > On Nov 16, 6:25 pm, Bassil Karam <[email protected]> wrote:
> >> > > > Rainer,
>
> >> > > > For your first question you say that you have the google key in a
> >> hidden
> >> > > > form field. So that means you can do:
>
> >> > > > googleWrite(MyCFC, 'MyKind', 'MyKey123');
>
> >> > > > What's the trouble? Is it that you would prefer to do something
> >> like:
>
> >> > > > MyCFC.setGoogleKey('MyKey123');
> >> > > > MyCFC.googleWrite();
>
> >> > > > So that you don't have to specify a kind?
>
> >> > > > Baz
>
> >> > > > On Mon, Nov 16, 2009 at 1:27 AM, Rainer <[email protected]>
> >> > > wrote:
>
> >> > > > > Sorry for my mistake...
> >> > > > > In my option 2) I know, that I can update an object with
> >> GoogleWrite
> >> > > > > (kind,keyName), so that's not my question there.
> >> > > > > My question in option 2) is:
> >> > > > > How do I get the kind and Keyname when I do a listing?
> >> > > > > - aUsers = GoogleQuery('select from User');
> >> > > > > - loop over aUsers
> >> > > > > - have an User object, can I do than a User.getKind() and
> >> > > > > User.getKeyName()?
>
> >> > > > > Rainer.
>
> >> > > > > On 16 nov, 10:18, Rainer <[email protected]> wrote:
> >> > > > > > Vince,
>
> >> > > > > > Coul you please clarify me on this subject, I don't get 'the
> >> circle
> >> > > > > > closed'.
>
> >> > > > > > When I follow the documentation athttp://
> >> > > > > wiki.openbluedragon.org/wiki/index.php/GoogleAppEngine:Datastore,
> >> > > > > > I can't seem to make a closing structure of my logic.
>
> >> > > > > > 1) When I choose to go for the googleKey (which I higly prefer,
> >> > > > > > because it's generated by the datastore), I do the following:
> >> > > > > > - create an object from my User.cfc (bean); User = CreateObject
> >> > > > > > ('component','model.user.User').init()
> >> > > > > > - write it to the datastore; googleKey = GoogleWrite(User);
> >> > > > > > - read from the datastore; User = googleRead(googleKey);
> >> > > > > > - get list of users; aUsers = GoogleQuery('select from User')
> >> > > > > > But what if I have a the details of a user in a form (with the
> >> > > > > > googleKey in a hidden input), and I post this form.
> >> > > > > > How do I than create a User object that 'knows' the googleKey so
> >> that
> >> > > > > > a GoogleWrite() will update an exisiting object in the
> >> datastore?
> >> > > > > > Should I first do a 'User = googleRead(googleKey)' and than
> >> update
> >> > > the
> >> > > > > > properties with my form properties, and than
> >> 'GoogleWrite(User)'?
> >> > > > > > Or can I set the googleKey in my User object with a
> >> 'setGoogleKey()'
> >> > > > > > function, or something like that?
>
> >> > > > > > 2) When I choose to go for the combination kind/keyName, I do
> >> the
> >> > > > > > following:
> >> > > > > > - create an object from my User.cfc (bean); User = CreateObject
> >> > > > > > ('component','model.user.User').init(kind,keyName)
> >> > > > > > - write it to the datastore; GoogleWrite(User,kind,keyName);
> >> > > > > > - read from the datastore; User = googleRead(kind,keyName);
> >> > > > > > - get list of users; aUsers = GoogleQuery('select from User');
> >> > > > > > But what if I have a the details of a user in a form (with the
> >> kind
> >> > > > > > and keyName in a hidden input), and I post this form.
> >> > > > > > How do I than create a User object that 'knows' the the kind and
> >> > > > > > keyName so that a GoogleWrite() will update an exisiting object
> >> in
> >> > > the
> >> > > > > > datastore? Should I first do a 'User = googleRead(kind,keyName)'
> >> and
> >> > > > > > than update the properties with my form properties, and than
> >> > > > > > 'GoogleWrite(User)'?
> >> > > > > > Or can I set the kind and keyName in my User object with
> >> > > 'setGoogleKind
> >> > > > > > () and setGoogleKeyName()' functions, or something like that?
>
> >> > > > > > Maybe, I am overseeing something very badly, but after read the
> >> doc a
> >> > > > > > couple of time, and trying some different code, I coul not come
> >> up
> >> > > > > > with a solution.
>
> >> > > > > > Thank you in advance for helping me out,
>
> >> > > > > > Rainer.
>
> >> > > > > > On 14 nov, 10:52, Rainer <[email protected]> wrote:
>
> >> > > > > > > Great! ... but, how do I know when I try to insert a new
> >> object
> >> > > what
> >> > > > > > > the new int (max int + 1) is for this specific object's
> >> keyName?
>
> >> > > > > > > And if I start using a UUID, is it unique enough to be sure it
> >> was
> >> > > not
> >> > > > > > > used before in a save action to the datastore?
>
> >> > > > > > > Questions... questions...
>
> >> > > > > > > Rainer.
>
> >> > > > > > > On Nov 14, 2:01 am, Bassil Karam <[email protected]> wrote:
>
> >> > > > > > > > I think I read somewhere that an int works a lot faster on
> >> gae,
> >> > > but I
> >> > > > > could
> >> > > > > > > > be completely mistaken. Anyone know? But otherwise, yeah: )
>
> >> > > > > > > > On Nov 13, 2009 4:54 PM, "Rainer" <[email protected]
>
> >> > > wrote:
>
> >> > > > > > > > Okay, so I don't rely on googleKey, but instead, I create my
> >> own
> >> > > > > > > > unique key, like maybe a UUID ?!
>
> >> > > > > > > > On Nov 14, 1:43 am, Bassil Karam <[email protected]>
> >> wrote: >
> >> > > Hey
> >> > > > > Rainer,
> >> > > > > > > > you don't need to read f...
>
> >> > > > > > > > > On Fri, Nov 13, 2009 at 4:14 PM, Rainer <
> >> > > [email protected]>
> >> > > > > wrote:
> >> > > > > > > > > > > Guys, > > > Maybe ...- Tekst uit oorspronkelijk
> >> bericht
> >> > > niet
> >> > > > > weergeven -
>
> >> > > > > > > - Tekst uit oorspronkelijk bericht weergeven -- Tekst uit
> >> > > > > oorspronkelijk bericht niet weergeven -
>
> >> > > > > > - Tekst uit oorspronkelijk bericht weergeven -
>
>
--~--~---------~--~----~------------~-------~--~----~
Open BlueDragon Public Mailing List
 http://www.openbluedragon.org/   http://twitter.com/OpenBlueDragon
 mailing list - http://groups.google.com/group/openbd?hl=en

 !! save a network - please trim replies before posting !!
-~----------~----~----~----~------~----~------~--~---

Reply via email to