2017-07-01 1 views
0

現在、私はユーザーが自分のアカウントを削除できるように関数を作成しています。私はreact-meteor-dataを使って反応的にユーザオブジェクトを検索しています。Meteor.user()はMeteor.users.removeに反応しません

これで、サーバー上で自分のメソッドを呼び出すときに、ユーザーコレクションからユーザーを正常に削除できますが、クライアントのMeteor.user()オブジェクトはユーザーを削除した後も反応しなくなりました。私が気にしなければならない措置はありますか?私はこのようにすることができると思っていた:

  1. ユーザーは自分のアカウントを削除します。
  2. ユーザーは、ユーザーコレクションに削除されると、ログアウトされます/またはMeteor.user()ことを私はこれまでやったユーザー

を削除した後の反応である:

​​ コンテナ

サーバー方法

Meteor.methods({ 
     selfDelete() { 
      console.log(this.userId); 
      try { 
       Meteor.users.remove(this.userId); 
      } catch (e) { 
       throw new Meteor.Error('self-delete', 'Failed to remove yourself'); 
      } 
     } 
    }); 

selfDelete()が呼び出された後、ユーザーはコレクションから削除されますが、クライアント側ではMeteor.user()は更新されません。

誰かがこのような理由を知っているかもしれないし、ユーザーが自分のアカウントを削除できるようにするよりよい方法があるかもしれません。これは、ユーザーが自分の反応容器の中に機能を再実行するために、コレクションとでビルドトラッカーに依存します

const user = Meteor.users.findOne(Meteor.userId()); 

に事前

答えて

1

変更

const user = Meteor.user(); 

感謝。期待どおりに動作しない場合はコメントしてください。私のコンテナでうまく動作します。

編集:この作業を行うためには、Meteor.usersを購読して公開する必要があることを忘れてしまいました。完全なコードは次のようになります。

//server 
Meteor.publish("myuserssub", function(filter){ 
    if (filter._id !== this.userId) 
     throw new Error("not permitted"); 
    return Meteor.users.find(filter); 
}); 

//client 
const userSub = Meteor.subscribe("myuserssub"); 
const user = userSub ? Meteor.users.findOne({_id:Meteor.user()._id}) : null; 
+0

ありがとうございます。あなたのアプローチを試みましたが、残念ながらそれは動作しません。コレクションからユーザーを削除すると、クライアント側全体が固執しているように見えます。 '流星のおもちゃ'では、ユーザーはまだログインしており、購読も更新されていません。 – grahan

+0

流星のおもちゃパッケージを取り除くとどうなりますか? – Jankapunkt

+0

問題はまだ存在します。 Meteor.user()がコレクションに反応しない理由は分かりません。 – grahan

関連する問題