使用Node.js通过AJAX请求从Redis检索数据

小猫咪

我会通过NodeExpress,和Socket.io聊天教程。我决定用来Redis存储聊天记录,并成功设置了聊天记录,以便我的信息正确发布到数据库中。我现在正在尝试访问要在客户端使用的信息(在这种情况下,我正在尝试访问当前在聊天中的用户列表,以便可以将他们显示在聊天的一侧)。$.getJSON用来提出GET要求。现在,我已经对其进行了设置,以便它尝试访问的文件仅具有该JSON对象:{"dog" : "2","cat":"3"}只是为了对其进行测试,并且可以正常工作,但是我不确定从那里去哪里,因为我每次尝试向该文件中添加函数时,即使我指定返回JSON对象并调用该函数,该请求也会停止返回正确的信息。

例如我试过:

var data = function(){
    return {"dog" : "2","cat":"3"}
}
data();

并且不返回任何内容(我了解,当我发出GET请求时,该函数未运行,但它甚至不返回该文本,如果它不运行函数,那么我不确定如何可以从该文件访问redis)

这就是我的想法:

var redis = require('redis')

//figure out how to access the redis client that I have at localhost:6379, something like var db = redis.X

//and then call (for example) db.smembers('onlineUsers') and be returned the object which I can iterate through

这是我的相关代码:

server.js:

var jade = require('jade');
var PORT = 8080;

var redis = require('redis');
var db = redis.createClient();
var pub = redis.createClient();
var sub = redis.createClient();

var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(PORT, function(){
  console.log("Now connected on localhost:" + PORT)
});

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res){
 res.render('home');
});

io.sockets.on('connection', function(client){

  sub.subscribe("chatting");
  sub.on("message", function (channel, message) {
        console.log("message received on server from publish");
        client.send(message);
    });

  client.on("sendMessage", function(msg) {
            pub.publish("chatting",msg);
        });

  client.on("setUsername", function(user){
            pub.publish("chatting","A new user in connected:" + user);
            db.sadd("onlineUsers",user);
        }
    );

  client.on('disconnect', function () {
        sub.quit();
        pub.publish("chatting","User is disconnected :" + client.id);
    });
});

script.js:

$(document).ready( function(){
    $client = io.connect();
    initialize();
});


var setUsername = function(){
    var username = $("#usernameInput").val();
    if (username)
    {
        var user = username;
        $client.emit('setUsername', username);
        $('#chatControls').show();
        $('#usernameInput').hide();
        $('#usernameSet').hide();
        showCurrentUsers();
    }
}

var showCurrentUsers = function(){
    $('#list_of_users').empty();

    $.getJSON('getusers.js', function(data){
        for (var i = 0; i < data.length; i++){
            $('list_of_users').append("<li>"+data[i]+"</li>")
        }
    })

}

var sendMessage = function(){
    var msg = $('#messageInput').val();
    var username = $("#usernameInput").val();
    if (msg)
    {
        var data = {msg: msg, user: username}
        $client.emit('message', data);
        addMessage(data);
        $('#messageInput').val('');
        // populate(username,msg);
    }
}


var addMessage = function(data) {
    $("#chatEntries").append('<div class="message"><p>' + data.user + ' : ' + data.msg + '</p></div>');
}


// var populate = function(username,msg) {
//     var data ;
// }

var initialize = function(){
    $("#chatControls").hide();
    $("#usernameSet").on('click', setUsername);
    $("#submit").on('click',sendMessage);
    showCurrentUsers();
}

现在,getusers.js文件包含的所有内容是:

{"dog" : "2","cat":"3"}

quoo

您似乎希望对$ .getJSON的调用能够加载并执行它加载的JavaScript。这样行不通。您需要制作一个节点端点(通过路由)以呈现JSON。然后,节点端点将进行数据操作/查询redis:

节点:

在routes.js中:

app.get('/chatdata', ChatController.getChatData);

在ChatController.js中(按需在此处创建数据)

exports.getChatData = function (req, res) {
   var data = function(){
      return {"dog" : "2","cat":"3"}
   };
   res.JSON(data);
};

前端

$.getJSON('getChatData', function(data){
    //...
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用通过 ajax 调用检索的数据绘制 Chart.js

如何使用前端ajax通过post方法发送的node.js在服务器端检索数据?

在Laravel中使用jquery的ajax请求检索数据

如何使用 jquery ajax 从 node.js 文件中检索数据

如何从node.js到Ajax检索数据?

在Node.js中使用Jquery Ajax请求从数据库中删除

使用Node.js异步请求在Redis中进行循环

使用Node.JS以JSON格式从MySQL检索数据

无法使用Node.js从MySQL表正确检索数据

无法使用Node.js从mongoDB检索数据

如何通过Node.js使用请求处理超时

使用请求检索 API 数据

如何使用Vue js通过Ajax请求获取的json数据在Google Maps上标记纬度和经度?

使用node.js从Redis获取层次数据

如何使用Node JS更新数据Redis缓存

在node.js中使用HTTP请求中的数据

如何使用Node.js在发布请求之间传输数据

Node.js-无法通过Ajax使用multer上传文件

使用 node express 从 mongodb 中检索数据

如何在C#中检索和使用通过Http GET请求获取的数据

在jQuery Ajax请求中使用POST而不是GET检索数据是否有任何不利之处?

使用Ajax检索数据网格

使用Node.js / Express访问AJAX POST数据

通过knex.js从oracledb中使用IO在node.js中使用IO处理请求

使用 body 执行 Get 请求 - Node js

使用请求模块抓取Node.js

使用node.js卷曲请求

使用请求模块的Node.JS代理

在使用(基于Webpack的)ZURB Foundation Framework时,如何通过jQuery AJAX从PHP脚本检索数据?