Я пишу приложение, используя магистраль + рельсы.
Приложение позволяет пользователям создавать билеты и показывать эти билеты в режиме реального времени для всех других пользователей, пользуясь услугами реального времени pusher.Синхронизирующий магистраль с толкателем
Моя проблема заключается в том, что, когда пользователь создает билет добавить его в коллекцию:
addTicket: function(newTicketData) {
var newTicket = new app.Ticket(newTicketData);
this.collection.add(newTicket, {merge: true});
newTicket.save(null, {
wait: true,
success: this.addTicketSuccess,
error: this.addTicketError
});
},
Код толкатель слушателем:
channel.bind('new_ticket', function(data) {
var ticketDataObj = jQuery.parseJSON(data.content);
app.ticketsView.addTicket(ticketDataObj);
});
В данный момент новая модель имеет ИДС, но не id из базы данных, которая может быть получена в обратном вызове addTicketSuccess
. С другой стороны, сервер посылает сигнал толкателя в действии create
, который отправляет новый билет с его id, но без id.
В результате две различные модели в коллекции, которые представляют собой один и тот же объект, один с CID и других с ID. Я знаю состояние гонки и ищу хорошее и надежное решение.
Спасибо !!!
Да, я знаю. Моя проблема заключается в том, что базовое приложение получает объект дважды - один раз в обратном вызове 'save', а один - через сигнал« pusher »(который, очевидно, не имеет cid). Вот почему у меня есть два объекта - один с __cid__, а другой с __id__. Важное замечание - невозможно узнать, что выполняется первым - ** сохранить обратный вызов ** или ** обратный вызов сигнала толкателя **. – guyaloni
Можете ли вы уточнить свой вопрос с помощью кода толкателя? –
Просто, дайте мне знать, если вам нужна дополнительная информация. – guyaloni