免责声明:这可能是一个非常无聊和多余的问题,但我花了一天时间在网上搜索并找不到一个答案......
我正在尝试做的事情:
- 我正在使用 RethinkDB 和 deepstream.io(在 node.js 上)构建即时消息系统
- 我只想将记录传播到正确(修改并)插入到 RethinkDB 表中的客户端
我已经设置的内容:我设置了 RethinkDB 并使用 rethinkdb 存储连接器和 rethinkdb 搜索提供程序在 node.js 上安装了 deepstream。在我的 Deepstream 客户端创建的记录会正确写入我的 RethinkDB。
服务器端:index.js
#!/usr/bin/env nodejs
var DSServer = require("deepstream.io");
var DSRethinkConnector = require("deepstream.io-storage-rethinkdb");
// Setup the deepstream server
var server = new DSServer();
server.set("host", "0.0.0.0");
server.set("port", 6020);
// Setup the RethinkDB storage connector
server.set("storage", new DSRethinkConnector({
port: 28015,
host: "localhost",
splitChar: "/",
defaultTable: "chat"
}));
// Run the server
server.start();
假设 A:我认为这只有使用 rethinkdb 搜索提供程序才能实现。请纠正我,如果我错了。
假设 B:我查看了这个站点: https : //deepstream.io/tutorials/integrations/db-rethinkdb/,据我了解,它不断地从我的 RethinkDB 表中为我提供实时搜索结果,我可以说“查找最新的 10 条消息”。请再次,如果我错了,请纠正我。
假设 C:假设 B 中的教程告诉我,我以列表对象的形式获得了 10 条最新消息。现在我在这里读到: https://deepstream.io/docs/client-js/datasync-list/每次添加新条目时,列表对象都会发出事件。(条目添加事件)。这个对吗?
计划:我想使用前面提到的教程中示例客户端代码的这一部分来连续检索 10 条最新消息:
var queryString = JSON.stringify({
table: 'book',
query: [
['title', 'match', '^Harry Potter.*'],
['price', 'lt', 15.30]
]
})
client.record.getList('search?' + queryString)
问题 A:我无法弄清楚正确的 queryString 应该是什么样子才能在 rethinkdb 表上连续保留最新 10 条消息的列表?
问题 B:然后我想监听列表的添加条目事件,以将新条目/消息写入客户端的 dom。但是我找不到一个示例/资源来解释我将如何去做?
这是我当前的客户端代码:index.html
<html>
<head>
<script src="deepstream.io-client-js/dist/deepstream.min.js"></script>
</head>
<body>
...
<script>
// Connect to the deepstream server
var ds = deepstream("192.168.192.201:6020").login();
// Create a unique name for the new record
var name = "messagethread__a_b/" + ds.getUid();
// Instantiate a new record
var record = ds.record.getRecord(name);
// Set several properties of the new record
record.set({
message: "Test 123",
from: "ClientA" //this says ClientB in index2.html
});
// Subscribe to changes on the table
var queryString = JSON.stringify({
table: 'messagethread__a_b',
query: [
['title', 'match', '^Harry Potter.*'],
['price', 'lt', 15.30]
]
})
record.getList('search?' + queryString);
</script>
</body>
</html>