我正试图弄清楚如何在Meteor.users.update()
完成之前阻止模板更新。
首先,我试图了解documentation and the use of an optional callback argument,以便理清正在发生的事情。
这就是我所拥有的:
Meteor.users.update(Meteor.userId(),
{$set:{'profile.reviewList': []}},
[],
function(err, result){
if (err){
console.log('oh no!');
} else {
console.log('Result achieved: '+this.profile.reviewList);
}
});
目前,console.log('Result achieved: '+this.profile.reviewList);
总是第一次返回类似...TypeError: Cannot read property 'reviewList' of undefined...
的内容,但会在结果返回之前告诉我它的触发。
我确定我没有正确实施回调,但我试图模仿这个答案:How do you ensure an update has finished in meteor before running a find?
我真的只想延迟重新渲染相关模板,直到创建属性为止。
非常感谢任何帮助。
答案 0 :(得分:0)
您假设回调函数中的范围(this
)返回user
对象,这是错误的。
如果你想在该回调中获得user
对象,只需在那里查询:
var user = Meteor.users.find(Meteor.userId()).fetch()
另一件事,你传递了empty array
作为第二个参数,这是不需要的。
Meteor.users.update(
Meteor.userId(),
{
$set: {
'profile.reviewList': 'testData'
}
},
function(err, result) {
if (err) {
console.log('oh no!');
} else {
var user = Meteor.users.find(Meteor.userId()).fetch();
console.log('Result achieved: ' , user && user.profile && user.profile.reviewList);
}
}
);