はこの流星クライアントコードはTracker.autorun
は一度実行するにしようとするが、それはreactivenessの設定と一回に一回、二回実行しなければならないことのように見えるよう。
これはいいですが、3回発射しています。設定のために1回、反応のために2回、サーバーはuser.profile.abc
を1回更新したにもかかわらず反応しました。それをテストする流星トラッカーオートラン火災2回
、私はMongoDBのコンソールでこのコードを実行すると、添付iamgeは、私はそれが二回発射が確認され得たものです。
は、どのように私はそれがユーザーのコレクションの変化に対応するために、一度だけ実行するように得ることができますか?おかげ
db.users.update({_id: Meteor.userId()},{$set: {'profile.ABC': ['a','b']}}).pretty()
//client
Meteor.call('cleanABC', (err) => {
if (!err) {
ABCListener();
}
});
ABCListener:() => {
Tracker.autorun(() => {
if (Meteor.userId()) {
console.log('auto run invoked');
if (Meteor.user().profile.ABC) {
const myArray = Meteor.user().profile.ABC;
//myFunction(myArray);
console.log('condition true');
} else {
console.log('condition false');
}
}
});
}
//server
'cleanABC': function() {
return Meteor.users.update({
_id: Meteor.userId()
}, {
$unset: {
'profile.ABC': ''
}
});
}
//and some where else in the code
Meteor.users.update({
_id: userId
}, {
$set: {
'profile.ABC': myArray
}
}, (err) => {
if (!err) {
console.log('just sent the array');
}
});
流星のユーザーは、反応性です。これにはTracker.autorunが必要ですか? – vijayst
@Vijayすぐに 'profile.ABC'を使うだけです。ハム、私はどのように考える必要があります。 –
はい。更新情報がminimongoに即座に適用されることを覚えておいてください。次に、いくつかの待ち時間で、同じコードがサーバー上で実行されます。 minimongoとMongoの間に相違がある場合、minimongoは更新と同期されます。トラッカーは、サーバープッシュからのプロファイルへの更新がある場合に呼び出されることもあります。私は 'Tracker.autorun'出て右のボックスからそれを使用するときに – vijayst