2016-11-30 2 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') 
}); 

는 여기에 있습니다. 당신이 /messages/{user_id}에 갈 때 JS 내가

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

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); 
    } 
}); 

과 router.js에서

그래서 기본적으로 당신은 현재 사용자가 {USER_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 
} 

에있을거야.

// 편집

는 여기에 내가 메시지 작성 처리 방법은 다음과 같습니다 메시지 모델, sender, user에서

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

방금 ​​OP를 편집하여'sendMessage()'액션을 포함 시켰습니다. – Sabin

답변

1

, 그리고 receiver는 모든 관계는, 그래서 엠버 데이터는 사용자 개체를 기대하고있다. 당신은 단지 당신의 sendMessage 행동에서 그것에게 ID를주고 있습니다.

# 1 :

나는이 문제를 해결하는 방법은 두 가지가 있습니다 믿는 아이디를

# 2를 사용

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 
      }); 
     }); 
    }, 
} 

: 오브젝트의 # 1

예제를 사용 # 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

Thanks Kori, 예제 # 2를 사용했습니다 :) – Sabin

+0

당신을 환영합니다. 그게 너에게 도움이 됐어! –