Sails.js - 从套接字数据更新变量

Sails.js - Update variable from socket data

当我使用 Sails.js 通过 websocket 接收新数据时,我正在尝试更新我的视图。

在我的控制器中 welcome.js 我有:

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

在我看来welcome.ejs我有:

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

并且此数据显示正确。

我已经设置了一个 websocket 来监听 mounted 函数中 welcome.page.js 中添加的新交易:

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

创建新交易后,由于控制台日志正确,它会显示在控制台中。

我的问题如下:如何使用我当前 console.logging 的数据更新 <% _.each(deals, function (deal) { %> 中的 deals 变量,以便新的交易在 for 循环中呈现?

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>`;