2013-06-19 222 views
1

我有一個應用程序,讓我創造出可以被髮送到N個社交網絡的消息,建模如下:更新對象多對多的關係

Social.Account = DS.Model.extend({ 
    username: DS.attr("string"), 
    messages: DS.hasMany("Social.Message") 
}); 

Social.Message = DS.Model.extend({ 
    text: DS.attr("string"), 
    account: DS.belongsTo("Social.Account") 
}); 

我的代碼創建記錄是這樣的:

saveMessage: function(){ 
    var account = Social.Account.find(this.get("id")), 
     msg = Social.store.createRecord(
        Social.Message, 
        { 
         text: postingWindow.get('text'), 
         account: account, 
        } 
      ); 
    account.get("messages").addObject(msg); 
    Social.store.commit(); 
} 

與窗體數據看起來像這樣:

text:testing one three five seven 
message_key: 
tags: 
user_id: 
created:Wed, 19 Jun 2013 21:39:14 GMT 
scheduled_at:2013-06-20T03:00:00.000Z 
is_editing:false 
status:C 
account:56 

使得p藝術作品優秀。現在我們正在調度未來的消息,這爲用戶提供了在他們保存後但在他們發送之前對其進行編輯的機會。在表面上我的實現似乎正常工作,但我注意到Ember並沒有發送帳戶信息和帖子,這意味着當我的服務器代碼運行時,消息在數據庫中被孤立。這裏的更新代碼:

sendNow: function(message){ 
    var account = Social.Account.find(this.get('controllers.account.id')); 
    message.setProperties({ 
     scheduled_at: '', 
     accounts: [account] 
     // I've also tried accounts: this.get('controllers.account.id') 
    }); 
    Social.store.commit(); 
} 

以及相應的表單數據:

text:testing one three five seven 
message_key: 
tags: 
user_id:17 
created:Wed, 19 Jun 2013 21:39:14 GMT 
scheduled_at: 
is_editing:false 

不管我做什麼,灰燼是不是賬戶數據發送到服務器。是否有更適當的方式更新記錄並使其正確保存?

+0

所以看起來這個問題是我們的服務器代碼開始。我們正在發送'accounts',但Ember模型是'account'。到目前爲止,這不是一個問題,因爲消息總是通過帳戶調用中的sideload拉入。所以我們現在很好。感謝所有看過這個的人。 – commadelimited

回答

0

你可以嘗試:

message.get('accounts').pushObject(account') 
+0

人。那在setProperties和Social.store.commit()調用之間? – commadelimited

+0

是的,但我不會嘗試通過setProperties調用 – ianpetzer

+0

設置帳戶值這似乎並不奏效。這個:'message.get('accounts')'返回undefined,而this:'message.get('account')'返回null。所以當我嘗試使用'pushObject'時出現錯誤。 – commadelimited

0

確定VaR的帳戶被設定?好像你是不符合GET聲明:

var account = Social.Account.find(this.get("id")),< - 雙引號

var account = Social.Account.find(this.get('controllers.account.id')); < - 單引號和不同對象結構?

另外,你試試: message.set('accounts', account);