【问题标题】:Embe Data: How to update a record嵌入数据:如何更新记录
【发布时间】: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的型号。 commentshasMany 吗?在这种情况下,请使用 this.get('comments').addObject 添加而不是 this.comments.push
  • 感谢@torazaburo。我在我的问题中添加了模型。但如上所述,主要问题在于以跨域问题结束的 save() 方法。你能帮忙吗?

标签: rest express ember.js ember-data


【解决方案1】:

我认为您也应该设置 Access-Control-Allow-Origin 标头。例如:

Access-Control-Allow-Origin: *

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多