Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor模板在Meteor.users.update结果之前更新_Meteor - Fatal编程技术网

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才被称为守卫操作员。看见