Meteor模板在Meteor.users.update结果之前更新
我正在试图找出如何防止模板在Meteor模板在Meteor.users.update结果之前更新,meteor,Meteor,我正在试图找出如何防止模板在Meteor.users.update()完成之前更新 首先,我试图弄清楚发生了什么事情 以下是我所拥有的: Meteor.users.update(Meteor.userId(), {$set:{'profile.reviewList': []}}, [], function(err, result){
Meteor.users.update()完成之前更新
首先,我试图弄清楚发生了什么事情
以下是我所拥有的:
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('实现的结果:'+this.profile.reviewList)
总是返回类似于…TypeError:无法第一次读取未定义…
的属性“reviewList”,这会在返回结果之前告诉我它已触发
我确信我没有正确地实现回调,但我试图对这个答案进行建模:
我真的只想延迟相关模板的重新呈现,直到创建属性为止
任何帮助都将不胜感激。您假设回调函数中的作用域(this
)返回用户
对象,这是错误的
如果要在该回调中获取user
对象,只需在那里查询它:
var user = Meteor.users.find(Meteor.userId()).fetch()
另外,您将空数组
作为不需要的第二个参数传递
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);
}
}
);
这很有效,谢谢。我不熟悉这行console.log('Result acgregated:',user&&user.profile&&user.profile.reviewList)中使用的符号代码>我的猜测是,在这三个实体都存在之前,控制台不会运行。这有必要吗?console.log是否会等待结果返回?或者更准确地说,只有在操作成功的情况下,a&b才被称为守卫操作员。看见