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
>>>
>>>
>>>

Reply via email to