2017-05-15 19 views
0

ログインしている複数のブラウザを開いているユーザーをブロックしようとしています。Meteor.userフィールドを有効にする方法

私はときユーザーがサインアップし、次のように人口Meteor.user()オブジェクトがあります。上記のコードを参照する

{ 
    "_id" : "uSS2RqZnnFwui67wk", 
    "createdAt" : ISODate("2017-05-15T07:28:10.546Z"), 
    "services" : { 
     "password" : { 
      "bcrypt" : "$2a$10$DPgA59Gmob4ajzjYZyh5auoHRUyQuF1/7M0KaWz.nzW0mIEqzlDK6" 
     }, 
     "resume" : { 
      "loginTokens" : [ 
       { 
        "when" : ISODate("2017-05-15T13:42:29.322Z"), 
        "hashedToken" : "tkoQnweSQhgRKGzaJTAkUU3/Ljd3p4wrBJfrRvRRlcY=" 
       } 
      ] 
     } 
    }, 
    "username" : "johndoe", 
    "emails" : [ 
     { 
      "address" : "[email protected]", 
      "verified" : false 
     } 
    ], 
    "profile" : { 
     "name" : "John Doe", 
     "mobile" : "9637637941", 
     "email" : "[email protected]", 
     "address" : "kfasd, asdas,d as dsad", 
     "gender" : "M", 
     "state" : "Uttar Pradesh", 
     "customerType" : "CLIENT", 
     "isBlocked" : true 
    }, 
    "status" : { 
     "online" : true, 
     "lastLogin" : { 
      "date" : ISODate("2017-05-15T14:12:02.094Z"), 
      "ipAddr" : "127.0.0.1", 
      "userAgent" : "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" 
     }, 
     "idle" : false 
    } 
} 

を、私はuser.profile.isBlocked*ステータスに基づいてUIを更新しようとしています。

マイUI.htmlは以下の通りです:

<template name="App_watch"> 
    {{#if isBlocked}} 
     User Has been Blocked. 
    {{else}} 
     User has Access. 
    {{/if}} 
</template> 

マイUI.js以下の通りである:コードで

import { Meteor } from 'meteor/meteor'; 
import './UI.html'; 

Template.App_watch.helpers({ 
    isBlocked() { 
    user = Meteor.users.find({_id: Meteor.userId}); 
    return user.profile.isBlocked; 
    } 
}); 

私は単により多くがあるかどうかを監視しています下回ります1つのブラウザーが同じログインで開かれている場合よりも優先されます。「はい」の場合はユーザーをブロックし、そうでない場合はユーザーをブロック解除します。

import './fixtures.js'; 
import './register-api.js'; 

UserStatus.events.on("connectionLogin", function(fields) { 
    var count = UserStatus.connections.find({userId : fields.userId}).count(); 
    if(count > 1) { //Block 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {"profile.isBlocked": true}}); 
    } else { // Unblock 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {"profile.isBlocked": false}}); 
    } 
}); 

問題文:

は私がようisBlocked変数の反応をしたいときに、ユーザのためのisBlockedフラグが変化します。現在は静的であり、リフレッシュが必要です。

答えて

3

試してみてください。

Template.App_watch.helpers({ 
    isBlocked() { 
    return Meteor.user() && Meteor.user().profile && Meteor.user().profile.isBlocked; 
    } 
}); 

あなたは、単一のオブジェクトを探している場合は、後者の戻りカーソルとして.findOne()の代わり.find()を使用する必要があります。また、Meteor.userId()ではありませんMeteor.userId

+1

ヌルチェックのためにupvoted! – zim

関連する問題