【发布时间】:2015-09-13 16:39:08
【问题描述】:
我已经通过
记录了我的模型“项目”store.find('item', 412).then(function(item){
...
});
模型看起来像这样:
item :{
title: "mySuperItem",
price: "45",
comments: [
23423,
656332
]
}
但是,我想要更改已创建记录中的 cmets ID(想添加一个新记录)。
所以我认为这样做会很好:
...
.then(function(item){
item.comments.push(234234);
item.save().then(...);
});
不幸的是,它没有按预期工作。 Ember 抛出奇怪的异常! 由于我自己使用 REST-API (nodes.js/express.js) 编写后端,所以 ember-data 将向后端发送一个简单的 OPTIONS-Call,并带有以下标头:
Host: localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: http://localhost:4200
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: content-type,x-access-token
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
我的后端将返回一个包含该标头的答案:Allow:"GET,HEAD,PUT" 所以我的后端似乎回答了 “嘿,可以将 PUT-Calls 发送到该地址”。 但是 ember 提示我使用 CORS,但由于在 CORS-Header 'Access-Control-Allow-Methods'中找不到该方法,因此无法正常工作。
怎么可能?也许我误解了什么
编辑添加
正如@torazaburo 正确提到的那样,Item 模型当然与“cmets”模型具有hasMany-relation。但是这里是 Item 的模型:
title: DS.attr('String'),
price: DS.attr('Number'),
comments: DS.hasMany('comment')
现在更清楚问题出在 save()-Part 上。如上所述,它会引发意外的“跨域”错误。
有什么帮助吗?
【问题讨论】:
-
请显示
item的型号。comments是hasMany吗?在这种情况下,请使用this.get('comments').addObject添加而不是this.comments.push。 -
感谢@torazaburo。我在我的问题中添加了模型。但如上所述,主要问题在于以跨域问题结束的 save() 方法。你能帮忙吗?
标签: rest express ember.js ember-data