Clouda-team / Cloudajs

Clouda Framework - A Realtime Javascript RIA Framework For Mobile WebApp
899 stars 403 forks source link

请教一个取mongodb一条记录中类型为集合的字段的问题 #29

Closed haoxiana closed 11 years ago

haoxiana commented 11 years ago

我在本地定义了两个modelA,B。mongodb中 A有一个字段是modelB的集合。 样式如下
Model.A = function(exports){ exports.config = {   fields:[     {name:'A1',type:'string'},     {name:'A2',type:'model',relation:'many',model:'Model.B'} ]}} Model.B = function(exports){ exports.config = {   fields:[     {name:'B1',type:'string'},     {name:'B2',type:'string'} ]}}

在Controller中取A的记录的时候,其中字段A2在本地可以以collection取出 ,但是在线上不行。 例如 msgCollection.find()[0].get('A2').find().length 这句在本地环境可以正常运行,但是在BAE上不行。 求解答。

tongyao commented 11 years ago

理论上推断这个应该与运行环境无关,有没有检查一下bae上的mongodb中数据是否正确?

haoxiana commented 11 years ago

mongodb中的记录为(RockMongo记录的) array ( '_id' => new MongoId("51ee3d6fb6939eee3e000001"), 'A1'=>'test', 'A2' => array ( '0' => array ( 'B1' => 'AW', 'B2' => 'ASDASD', ), '1' => array ( 'B1' => '1231', 'B2' => '2131', ), ), ) 在本地环境中 取出来的数据 打印为[{"A1":"test","A2":[{"B1":"AW","B2":"ASDASD"},{"B1":"1231","B2":"2131"}]}]。线上环境取出来的是[{"A1":"test","A2":[]}]。线上环境Model.A 的A2改为collection后 取出来为[{"A1":"test","A2":{"0":{"B1":"AW","B2":"ASDASD"},"1":{"B1":"1231","B2":"2131"}}}] 两边数据一套程序导入的。 我想问下是我定义的model问题还是导入到mongoDB存储的结构有问题或者我导入到BAE环境哪个配置有问题 。求解

tongyao commented 11 years ago

我没看太懂,A2改为collection是指model的定义改为collection么? 如果是的话是否改为collection后就已经解决问题了?