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

,並在router.js我

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

因此,基本上,當你去/messages/{user_id}您可以查看所有當前用戶具有與具有{USER_ID}中的用戶信息。這裏有一個JSON響應訪問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 
    } 
] 

}

當現在要創建一個新的消息沒有發送者,接收者或用戶ID與創建新的記錄相關聯,當我從服務器獲取,爲了將這些發送到服務器。

這就是我必須在有效載荷

{ 
    "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

我剛剛編輯OP來包含'sendMessage()'動作 – Sabin

回答

1

在你的消息模型,senderuserreceiver是所有的關係,所以燼數據期待的用戶對象。你只需在你的sendMessage行動中給它ID。

我相信有兩種方法來解決這個問題:

#1:使用的ID

#2:使用對象的#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 
      }); 
     }); 
    }, 
} 

#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

謝謝Kori,使用示例#2做到了:) – Sabin

+0

不客氣。快樂爲你工作! –