I have created an issue [1] and will take a look this evening. I suspect it is my problem rather than BaseX. I have never been happy with that parsing code :-)
I see there are now 3 Node BaseX clients [2] I think Hans simple-basex has a lot of good ideas regarding the parsing. /Andy [1] https://github.com/apb2006/basex-node/issues/10 [2] https://npmjs.org/search?q=basex On Tue, Jul 23, 2013 at 3:13 PM, Gerald de Jong <ger...@delving.eu> wrote: > The state machine starts in "type" state. > > case "type": > var r = self.popByte(); > if (r) { > self.state = (r.data == "\0") ? "status" : "item"; > progress = true; > } > break > > But the first time it gets in here popByte returns an empty object for r. > I would have expected it to get that they "type" is \000b. Maybe there's > something wrong at the deeper interpretation level. This does look like a > proper response from BaseX: > > S1<< > > '\u000b<person>Gumby\nman</person>\u0000\u000b<person>Pokey\nhorse</person>\u0000\u0000\u0000' > > Does it not? > > > On Tue, Jul 23, 2013 at 4:09 PM, Gerald de Jong <ger...@delving.eu> wrote: > >> Hi Andy! Thanks for getting back to me so quickly. I'm indeed using: >> >> package.json: "basex": "~0.6.1" >> >> I thought as well that it might be an old reply, but all I do is create a >> database, insert a document, and then query for something that is not there. >> >> I am using BaseX 7.6 if that makes any difference. >> >> Maybe you can see it. Here's the debug of what goes back and forth >> during the whole session: >> >> S1<< >> '1374588092554420000\u0000' >> S1>> >> 'admin\u0000' >> S1>> >> '713de454606e785a0666bd57e6554891\u0000' >> S1<< >> '\u0000' >> S1: authorized >> S1>> >> 'create db gumby\u0000' >> S1<< >> '\u0000Database \'gumby\' created in 5.01 ms.\n\u0000\u0000' >> response: { result: '', >> info: 'Database \'gumby\' created in 5.01 ms.\n', >> ok: true } >> .S1>> >> >> '\t/people.xml\u0000<people><person>Gumby\nman</person><something>else</something><person>Pokey\nhorse</person></people>\u0000' >> S1<< >> 'Path "people.xml" added in 1.88 ms.\n\u0000\u0000' >> response: { ok: true, result: 'Path "people.xml" added in 1.88 ms.\n' } >> .S1>> >> '\u0000//somethingNotThere\u0000' >> S1<< >> '0\u0000\u0000' >> response: { ok: true, result: '0' } >> S1>> >> '\u00040\u0000' >> S1<< >> '\u0000\u0000' >> >> And then it hangs, since the callback isn't called. >> >> If, instead, I do a query that does give results back I get the first >> value prefixed with \000b, which I believe is intended to indicate that the >> result is an "element". >> >> S1<< >> >> '\u000b<person>Gumby\nman</person>\u0000\u000b<person>Pokey\nhorse</person>\u0000\u0000\u0000' >> response: { ok: true, >> result: >> [ '\u000b<person>Gumby\nman</person>', >> '<person>Pokey\nhorse</person>' ] } >> >> {"ok":true,"result":["\u000b<person>Gumby\nman</person>","<person>Pokey\nhorse</person>"]} >> >> See what I mean? >> >> -Gerald >> >> >> On Tue, Jul 23, 2013 at 3:54 PM, Andy Bunce <bunce.a...@gmail.com> wrote: >> >>> Hi Gerald, >>> >>> Could that '\u0000\u0000' be part of an asynchronous response to some >>> previous command? >>> >>> Otherwise it looks fine: >>> -> '\u0000 () \u0000' // create query returning empty sequence >>> <- '1\u0000 \u0000' //The 1 is the query handle. >>> -> '\u0004 1 \u0000' //Execute the query with handle 1 >>> <- '\u0000 \u0000' // no result no error >>> >>> Are you using https://npmjs.org/package/basex? If you can raise any >>> problems or questions on github and I will take a look. >>> >>> /Andy >>> >>> On Tue, Jul 23, 2013 at 12:43 PM, Gerald de Jong <ger...@delving.eu>wrote: >>> >>>> So the driver sends a query for something that should give no results: >>>> >>>> '\u0000/somethingNotThere\u0000' >>>> >>>> It then receives, to my surprise: >>>> >>>> '\u0000\u0000' >>>> >>>> followed by: >>>> >>>> '1\u0000\u0000' >>>> >>>> then sends: >>>> >>>> '\u00041\u0000' >>>> >>>> and receives again: >>>> >>>> '\u0000\u0000' >>>> >>>> Are these proper responses.. is the driver misunderstanding them? >>>> >>>> >>>> >>>> On Tue, Jul 23, 2013 at 1:41 PM, Gerald de Jong <ger...@delving.eu>wrote: >>>> >>>>> Woops, somehow sent before I intended. Just a sec. >>>>> >>>>> >>>>> On Tue, Jul 23, 2013 at 1:40 PM, Gerald de Jong <ger...@delving.eu>wrote: >>>>> >>>>>> I'm trying to quickly prototype a REST server which uses BaseX for >>>>>> persistence using NodeJS. >>>>>> >>>>>> I'm able to create a session, add a document, query that document, >>>>>> and then close the session. Fine. >>>>>> >>>>>> But when I create a query that should return no results, it seems the >>>>>> NodeJS module for BaseX I'm using seems to completely misunderstand the >>>>>> result and never execute the callback. >>>>>> >>>>>> I looked at the protocol spec >>>>>> http://docs.basex.org/wiki/Server_Protocol but it doesn't seem to >>>>>> give back what is specified here. I need a sanity check. >>>>>> >>>>>> The driver sends this: >>>>>> >>>>>> -- >>>> Delving BV, Vasteland 8, Rotterdam >>>> http://www.delving.eu >>>> http://twitter.com/fluxe >>>> skype: beautifulcode >>>> +31629339805 >>>> >>>> _______________________________________________ >>>> BaseX-Talk mailing list >>>> BaseX-Talk@mailman.uni-konstanz.de >>>> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk >>>> >>>> >>> >> >> >> -- >> Delving BV, Vasteland 8, Rotterdam >> http://www.delving.eu >> http://twitter.com/fluxe >> skype: beautifulcode >> +31629339805 >> > > > > -- > Delving BV, Vasteland 8, Rotterdam > http://www.delving.eu > http://twitter.com/fluxe > skype: beautifulcode > +31629339805 > > _______________________________________________ > BaseX-Talk mailing list > BaseX-Talk@mailman.uni-konstanz.de > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk > >
_______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk