2016-01-11 207 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'