2016-01-11 206 views
3

我有MongoDB的后端回环实例,并定义了已嵌套(匿名)模式称为“位置”的属性模型:嵌套模型

"name": "thing", 
    "plural": "things", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "title": { 
     "type": "string", 
     "required": true 
    }, 
    "description": { 
     "type": "string" 
    }, 
    "location": { 
     "lat": { 
     "type": "string" 
     }, 
     "lng": { 
     "type": "string" 
     } 
    } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 

在我的Android项目,我正在使用loopback sdk将所有“thing”模型获取到从loopback模型类扩展的thing.java类的实例中。

ThingRepository repository = restAdapter.createRepository(Thing.class); 
    repository.findAll(/* callback code ommitted */) 

public class Thing extends Model { 
    private String id; 
    private String title; 
    private String description; 
    private Location location; 
    /* getters/setters removed */ 
    } 

当我从服务器获取所有的“东西”,他们都看起来很好,除了嵌套的“位置”总是空。我已经证实,我可以从环回的REST apis中获取东西,正确填充位置。但似乎回环客户端不会反序列化并填充'位置'。 “位置”是一个简单的java类,只有2个整数(lat和long)。我试图将它从'Model'扩展,但它仍然会返回为null。

public class Location extends Model { 
    private String lat; 
    private String lng; 
    /* getters/setters removed */ 
} 

任何想法?

回答

1

This functionnality does not seem to be supported at the moment.

我们应该有希望得到这个免费的,一旦我们有一个正确的库支持自定义注释

同时替换我们手写的JSON解析器,对于一个没脑子的解决方案您将创建一个location模型,添加一个thingHasOnelocation关系,并使用“api/thing/{id}/location”端点。

或者你可以叉the project,更改JSON解析库并提出拉取请求。这是给你;)

编辑:或者,你可能已经想到了这一点,但一个更简单的解决方案,删除嵌套的对象,并使用两种经典的性质location_latlocation_lng

+0

非常感谢您的信息,我认为您是对的。我会稍后再打开它,然后将答案设置为解决方案。 –

+1

我增加了一个更简单的解决方案 – Overdrivr

0

我已经改变了只有几行现在它可以递归解析所有嵌套模型

compile 'com.github.farruxx:loopback-sdk-android:v1.6.3'