【发布时间】:2017-07-23 07:48:37
【问题描述】:
我目前正在尝试弄清楚如何使用来自 RethinkDB 的更改提要。
我有一个名为Calls 的表,在插入、删除和更新它时,我想流式传输更改。
现在,我有最初加载调用然后返回更改的功能:
r.db('test').table('Calls').run(function(err, cursor) {
if (err) throw err;
socket.emit('load calls', cursor);
});
r.db('test').table('Calls').orderBy({index: r.desc('call_number')})
.changes().run(function(err, cursor) {
if (err) throw err;
cursor.each(function(err, record) {
socket.emit('load calls', record);
});
});
在前端,我将 HTML 附加到页面:
socket.on('load calls', function(docs) {
docs.map((call) => {
$('.calls-list').append(`
<tr id="call_${call.call_number}">
<td>${call.call_number}</td>
<td>${call.time}</td>
<td>${call.type}</td>
<td>${call.status}</td>
<td>
</td>
<td>${call.location} - ${call.location_cross}</td>
<td>${call.notes}</td>
<td><a id="update-call-${call.call_number}" href=""><i class="edit icon yellow text"></i></a> <a id="archive-call-${call.call_number}" href=""><i class="delete icon red text"></i></a></td>
</tr>
`);
}
});
这里的问题是附加的 HTML 或多或少是永久的并且“独立于”数据库;我希望它像this video 一样实时并依赖于数据库更改提要。在这种情况下,数据库插入和 orderBy 是即时的。所以在我当前的问题中,如果有人想删除一个调用,那么我将不得不发出一个套接字事件并通过引用 ID 来删除相应的 HTML 元素。
【问题讨论】:
标签: jquery socket.io rethinkdb