gpt4 book ai didi

node.js - Rethinkdb Node 将 feed 更改为 HTML

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:45 26 4
gpt4 key购买 nike

我正在尝试显示从 rethinkdb 数据库到 HTML(前端)的任何更改源,但我无法显示任何更改源。

您能帮我解决这个问题吗?

文件是app.js

var express = require('express'),
app = express(),
server = require('http').createServer(app),
users = {},
db='testing',
table = 'todos';
io = require('socket.io').listen(server);
var bodyParser = require('body-parser');

server.listen(5000);

app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

var config = require(__dirname + '/config.js');
var r = require('rethinkdbdash')(config.rethinkdb);

io.sockets.on('connection', function(socket){
r.db(db).table(table).pluck('title').changes().run().
then(function(feed){
feed.each(function(err, item){
console.log(JSON.stringify(item, null, 2));
io.emit('new message', item);
});
});
});

config.js 文件

module.exports = {
rethinkdb: {
host: '192.168.2.3',
port: 28015,
authKey: '',
db: 'testing'
},
express: {
port: 5000
}
};

index.html 文件

<html>
<head>
<title>Chat with socket.io and node.js</title>
<style>
#chat{
height:500px;
}
</style>
</head>
<body>
<div id="chat"></div>
<form id="send-message">
<input size="35" id="message"></input>
<input type="submit"></input>
</form>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
jQuery(function($){
var socket = io.connect();
var $messageForm = $('#send-message');
var $messageBox = $('#message');
var $chat = $('#chat');

$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message', $messageBox.val());
$messageBox.val('');
});

socket.on('new message', function(data){
$chat.append(data + "<br/>");


});
</script>
</body>
</html>

最佳答案

index.html 上有一些语法错误,这会阻止客户端运行,那么主要问题是您选择了错误的字段。

这是有效的代码:

app.js

var express = require('express'),
app = express(),
server = require('http').createServer(app),
users = {},
db='testing',
table = 'todos';
io = require('socket.io').listen(server);
var bodyParser = require('body-parser');

server.listen(5000);

app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

var config = require(__dirname + '/config.js');
var r = require('rethinkdbdash')(config.rethinkdb);

io.sockets.on('connection', function(socket){
r.db(db).table(table)
.pluck('title')
.changes()
.run()
.then(function(feed){
feed.each(function(err, item){
console.log(JSON.stringify(item, null, 2));
io.emit('new message', item.new_val.title);
})
})
})

index.html

<html>
<head>
<title>Chat with socket.io and node.js</title>
<style>
#chat{
height:500px;
}
</style>
</head>
<body>
<div id="chat"></div>
<form id="send-message">
<input size="35" id="message"></input>
<input type="submit"></input>
</form>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
jQuery(function($){
var socket = io.connect();
var $messageForm = $('#send-message');
var $messageBox = $('#message');
var $chat = $('#chat');

$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message', $messageBox.val());
$messageBox.val('');
});

socket.on('new message', function(data){
$chat.append(data + "<br/>");


});
})
</script>
</body>
</html>

请注意,在更改源上,您会得到如下文档:

{
"new_val": {
"id": "862e6410-f686-4a70-8a52-d4387181d4f2",
"title": "12"
},
"old_val": null
}

如果返回整个文档,则客户端上的字符串 concat $chat.append(data + "<br/>")可能会收到错误或“object Object”字符串,因为数据是对象,而不是字符串。

如果您只返回这样的标题:

io.emit('new message', item.new_val.title);

然后字符串 concat 就可以正常运行了。

另外,你的代码很乱。我建议您总体上了解一些 JavaScript 基础知识。

关于node.js - Rethinkdb Node 将 feed 更改为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com