我对节点和套接字比较陌生。我试图实现的是使用护照对用户进行身份验证,并将登录的用户总数发送到视图中。这样,如果登录用户可以看到当前登录用户的总数,如果用户登录,则当其他用户登录时,计数会减少或增加。
使用passport.socketio从socket.io连接访问经过身份验证的护照用户信息。
在回调中,我将用户名存储在一个猫鼬集合中,并相应地在注销时将用户从集合中删除。我得到了模型中需要传递并绑定到视图中的用户数量。Jade是模板引擎。下面是我的onAuthorizeSuccess回调的样子,我试图将计数传递给home.jade。
function onAuthorizeSuccess(data, accept) {
var username = data.user.username;
var User = mongoose.model('loggedusers', userSchema);
var user = new User({
username: username
});
user.save(function (err, data) {
if (err) console.log(err);
else {
console.log('Saved : ', data);
}
User.count({}, function (err, c) {
console.log('Count is ' + c);
app.get('/', function (req, res) {
res.render('home', {
count: {
countData: c
}
});
});
});
});
console.log('successful connection to socket.io ');
accept(); //Let the user through
}在玉图中,我试着用
li Logged Users ---> #{countData.c}但是,countData在视图中没有定义。
如何将动态值从服务器呈现到玉中的视图?
任何帮助都非常感谢。
谢谢你,阿纳布
发布于 2015-08-05 06:44:07
您的变量是错误的,您应该用#{count}代替:
res.render('home', {count: c});发布于 2015-08-21 14:18:29
弄明白了。
通过套接字向服务器内容提供一个函数,该控件可以帮助在前端进行更新。
module.exports = function (socket) {
setInterval(function () {
var UserSchema = require('mongoose').model('loggedusers');
UserSchema.count({}, function(err, c){
console.log('Count is ' + c);
socket.emit('send:count', {
count: c
});
});
}, 1000);
};角控制器angular.module(‘myApp.Controller’,[])。控制器(‘AppCtrl’,函数($scope,套接字){socket.on(发送:计数,函数(数据){ $scope.count = data.count;});};
而在翡翠中,{{count}}和add div.container(ng-controller='AppCtrl')应该给出前端的更新计数。
阿纳布
https://stackoverflow.com/questions/31824981
复制相似问题