2016-11-30 3 views
0

が、私は次のようになり、ユーザーとメッセージモデル持って働いていないレコードを作成します。エンバーデータの関係の表現 -

//models/user.js

export default DS.Model.extend({ 
    name: DS.attr('string'), 
}); 

//models/message.jsを

//メッセージ/メッセージ/ルート:ここ

export default DS.Model.extend({ 
    body: DS.attr('string'), 
    sender: DS.belongsTo('user', { inverse: null }), 
    receiver: DS.belongsTo('user', { inverse: null }), 
    user: DS.belongsTo('user') 
}); 

は、メッセージ/メッセージのルートがどのように見えるかです。 JS

export default Ember.Route.extend({ 
model(params) { 
    return Ember.RSVP.hash({ 
     messages: this.store.query('message', { filter: {user: params.user} }), 
     user: this.store.findRecord('user', params.user), 
    }); 
    }, 

    setupController(controller, models) { 
    controller.set('messages', models.messages); 
    controller.set('user', models.user); 
    } 
}); 

と私は基本的にあなたが/messages/{user_id}に行くときあなたは、現在のユーザーが{USER_ID}を持つユーザーであり、すべてのメッセージを表示することができ

this.route('messages', function() { 
    this.route('message', { path: ':user' }); 
}); 

を持ってrouter.jsで。ここでは順番に、で作成した新しいレコードを関連付ける一切送信者、受信者、またはユーザーIDがありません新しいメッセージを作成しようとしたときに今messages/5

{ 
"messages": [ 
    { 
    "id": 10, 
    "sender": 1, 
    "receiver": 5, 
    "body": "Hello world!", 
    "user": 5 
    }, 
    { 
    "id": 7, 
    "sender": 1, 
    "receiver": 5, 
    "body": "Sorry, I don't get it!", 
    "user": 5 
    }, 
    { 
    "id": 6, 
    "sender": 5, 
    "receiver": 1, 
    "body": "Is it possible?", 
    "user": 5 
    } 
] 

}

を訪問したときに、私は、サーバーから取得するJSONレスポンスですこれらをサーバーに送信します。ここで

は私がペイロード

{ 
    "body":"New message", 
    "sender":null, 
    "receiver":null, 
    "user":null 
} 

にそれは私がこれらを処理する方法がわから関係ないと間違って何かをやっている明らかだてきたものです。

//編集

は、ここで私はメッセージの作成を扱う方法は次のとおりです。

actions: { 
    sendMessage() { 
     const flashMessages = Ember.get(this, 'flashMessages'); 
     this.store.createRecord('message', { 
      body: this.get('message'), 
      sender: this.get('currentUser.id'), 
      user: this.get('user.id'), 
     }).save().then(() => { 
      flashMessages.success('Message sent!', { 
       timeout: 2000, 
       destroyOnClick: true 
      }); 
     }); 
    }, 
} 
+0

新しいメッセージを作成する方法は?あなたはそのコードを投稿できますか? – Serge

+0

私は 'sendMessage()'アクションを含めるようにOPを編集しました – Sabin

答えて

1
あなたのメッセージモデルで

senderuser、およびreceiverは、すべての関係なので、燃えさしデータは、ユーザーオブジェクトを期待しています。あなたはあなたのsendMessageアクションでIDを与えているだけです。

私はこの解決には二つの方法があると信じて:

#1:#1のオブジェクトを使用し

例:

actions: { 
    sendMessage() { 
     const flashMessages = Ember.get(this, 'flashMessages'); 
     this.store.createRecord('message', { 
      body: this.get('message'), 
      senderId: this.get('currentUser.id'), 
      userId: this.get('user.id'), 
     }).save().then(() => { 
      flashMessages.success('Message sent!', { 
       timeout: 2000, 
       destroyOnClick: true 
      }); 
     }); 
    }, 
} 

のID

#2を使用します#2の例:

actions: { 
    sendMessage() { 
     const flashMessages = Ember.get(this, 'flashMessages'); 
     this.store.createRecord('message', { 
      body: this.get('message'), 
      sender: this.get('currentUser'), 
      user: this.get('user'), 
     }).save().then(() => { 
      flashMessages.success('Message sent!', { 
       timeout: 2000, 
       destroyOnClick: true 
      }); 
     }); 
    }, 
} 

どちらかまたは両方があなたの現在の紙詰まりから脱出するはずです。

+0

ありがとうございます。例#2を使ってありがとう:) – Sabin

+0

よろしくお願いします。それはあなたのために働いた幸せ! –

関連する問題