2016-04-21 68 views
1

我使用烬数据,我打电话给使用承诺的空白内容?

this.store.findAll('environment').then(function(values){ 
    //1 
},function(reason){ 
    //rejected 
}); 

我的API和我的代码不会进入// 1,问题是,我得到这个对象,似乎是相当无效的。

enter image description here


这里是我的API发回。

{ 
    "data": { 
    "environments": [ 
     { 
     "id": 1, 
     "localePath": "C:\\XML_DEPOT", 
     "name": "Acceptation 1", 
     "remotePath": "D:\\XML_DEPOT", 
     "databaseServerName": "blabla", 
     "databaseName": "blabla", 
     "port": 60903 
     }, 
     { 
     "id": 2, 
     "localePath": "bob", 
     "name": "Acceptation 2", 
     "remotePath": "bob", 
     "databaseServerName": "blabla\\blabla", 
     "databaseName": "blabla", 
     "port": 60904 
     } 
    ] 
    } 
} 

第二次尝试我给了它,但仍然不喜欢它。

{ 
    "data": [ 
    { 
     "id": 1, 
     "localePath": "C:\\XML_DEPOT", 
     "name": "Acceptation 1", 
     "remotePath": "D:\\XML_DEPOT", 
     "databaseServerName": "W050A01SQL1", 
     "databaseName": "MAMROT01P1_MSCRM", 
     "port": 60903, 
     "type": "environments" 
    }, 
    { 
     "id": 2, 
     "localePath": "bob", 
     "name": "Acceptation 2", 
     "remotePath": "bob", 
     "databaseServerName": "W050A01SQL1\\W050A01SQL1B02", 
     "databaseName": "MAMROT01P1_MSCRM", 
     "port": 60904, 
     "type": "environments" 
    } 
    ] 
} 

这是我的模型声明

//environment.js 
export default Model.extend({ 
    id: DS.attr('number'), 
    localePath: DS.attr('string'), 
    name: DS.attr('string'), 
    remotePath: DS.attr('string'), 
    databaseServerName: DS.attr('string'), 
    databaseName: DS.attr('string'), 
    port: DS.attr('number') 
}); 

谢谢!

+0

答案:将“数据”更改为“环境”并删除模型中的ID –

+0

是的,假定为“id”。恭喜你弄明白了! –

回答

0

根据您使用的Ember版本,并假设您的环境模型设置良好(也许您可以列出,以便我们可以排除),您希望服务器将数据发回给您两种格式之一,使灰烬数据开心:

  1. 灰烬1.13(或更早版本),其默认DS.RESTAdapterdocs

    { 
        "environments": [ 
        { 
         "id": 1, 
         "localePath": "C:\\XML_DEPOT", 
         "name": "Acceptation 1", 
         "remotePath": "D:\\XML_DEPOT", 
         "databaseServerName": "blabla", 
         "databaseName": "blabla", 
         "port": 60903 
        }, 
        { 
         "id": 2, 
         "localePath": "bob", 
         "name": "Acceptation 2", 
         "remotePath": "bob", 
         "databaseServerName": "blabla\\blabla", 
         "databaseName": "blabla", 
         "port": 60904 
        } 
        ] 
    } 
    
  2. 灰烬2.0+其默认DS.JSONAPIAdapterdocs

    { 
        "data": [ 
        { 
         "type": "environments", 
         "id": 1, 
         "attributes": { 
         "localePath": "C:\\XML_DEPOT", 
         "name": "Acceptation 1", 
         "remotePath": "D:\\XML_DEPOT", 
         "databaseServerName": "blabla", 
         "databaseName": "blabla", 
         "port": 60903 
         } 
        }, 
        { 
         "type": "environments", 
         "id": 2, 
         "attributes": { 
         "localePath": "bob", 
         "name": "Acceptation 2", 
         "remotePath": "bob", 
         "databaseServerName": "blabla\\blabla", 
         "databaseName": "blabla", 
         "port": 60904 
         } 
        } 
        ] 
    } 
    

而且模型可以删除ID属性,因为你已经发现,因为它是假设和灰烬为你添加。

//environment.js 
export default Model.extend({ 
    localePath: DS.attr('string'), 
    name: DS.attr('string'), 
    remotePath: DS.attr('string'), 
    databaseServerName: DS.attr('string'), 
    databaseName: DS.attr('string'), 
    port: DS.attr('number') 
}); 

希望能得到你想要的东西。

+0

非常感谢! –

+0

我不明白从这个文档http://emberjs.com/api/data/classes/DS.RESTAdapter.html 如果我使用RESTAdapter,我这样做我发送我的JSON应该没事吗?这似乎不是从旧的文档版本。 –

+0

@ Dr.DenisMcCracleJizz我认为在使用RESTAdapter时,仍然需要删除''data“:{wrapper}。它看起来仍然在寻找Ember 1.13风格的JSON。让我知道这是否有效。 –