I found another problem!!
if you do this:
mongo.user.insert(name='Jim', age=18, city='Detroit')
mongo.user.insert(name='Jack', age=18)
and then select
users = mongo(mongo.user.age==18).select()
you don't have the field "city" in one of the rows, so you get this error:
users = mongo(mongo.user.age==18).select()
File "/opt/web2py/gluon/dal.py", line 8123, in select
return adapter.select(self.query,fields,attributes)
File "/opt/web2py/gluon/dal.py", line 4700, in select
return processor(rows,fields,colnames,False)
File "/opt/web2py/gluon/dal.py", line 1681, in parse
self.parse_value(value, fields[j].type,blob_decode)
File "/opt/web2py/gluon/dal.py", line 1575, in parse_value
return self.parsemap[key](value,field_type)
File "/opt/web2py/gluon/dal.py", line 1641, in parse_id
return int(value)
ValueError: invalid literal for int() with base 10: 'Jack'
On Thursday, May 10, 2012 10:16:32 PM UTC+1, Francisco Costa wrote:
>
> Just add a '\' at the end of line 4664 and your are done!
>
> Great job Massimo!
>
>
> On Thursday, May 10, 2012 9:12:48 PM UTC+1, Massimo Di Pierro wrote:
>>
>> This helps. I have another attempt to fix this in trunk. Hard to test it
>> since I do not have mongodb installed.
>>
>> On Thursday, 10 May 2012 08:39:22 UTC-5, Francisco Costa wrote:
>>>
>>> Still not working. I think Fields order is wrong.
>>>
>>> At the end of the select() function I write this:
>>>
>>> a = []
>>> for f in fields:
>>> a.append(f.type)
>>> return dict(rows=rows, fields=a, colnames=colnames)
>>>
>>> and I got this:
>>>
>>> colnames:
>>> city
>>> age
>>> _id
>>> name
>>> fields:
>>> id
>>> text
>>> integer
>>> string
>>> rows:
>>> Toronto
>>> 66L
>>> 24652490551171733682233802752L
>>> John
>>>
>>>
>>>