Sails.js - обновить переменную из данных сокета - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь обновить свой вид, когда я получаю новые данные через веб-сокет, используя Sails.js.

в моем контроллере welcome.js У меня есть:

module.exports = {
    fn: async function (inputs, exits) {
        var allDeals = await Deal.find({});
        return exits.success({deals:allDeals});
    }
};

в моемview welcome.ejs У меня есть:

<% _.each(deals, function (deal) { %>
    <div class="dealTitle"><%= deal.title %></div>
<% }) %>

И эти данные отображаются корректно.

Я настроил веб-сокет для прослушивания новых сделок, добавляемых в welcome.page.js в функции mounted:

mounted: async function() {
    io.socket.get('/feed/subscribe', function(data, jwr) {
      io.socket.on('new_entry', function(entry) {
        console.log(entry); 
      });
     });
},

Как только новая сделка создана, она показываетв консоли благодаря правильному журналу консоли.

У меня такой вопрос: как мне обновить переменную deals в <% _.each(deals, function (deal) { %> данными, которые я в данный момент пытаюсь сохранить с помощью console.logging,чтобы новые предложения отображались в цикле for?

1 Ответ

0 голосов
/ 06 октября 2018

ejs существует только на сервере, поэтому вы не можете получить к нему доступ.Однако вы можете просто обернуть элементы div в родительский элемент:

<div id="deals" >
 <% _.each(deals, function (deal) { %>
<div class="dealTitle"><%= deal.title %></div>
<% }) %>
</div>

А затем, когда появится новая запись, добавьте html к этой сделке div:

 document.getElementById("deals").innerHTML += `<div class="dealTitle">${entry.title}</div>`;
...