流星用户助手在更新后挂断

阿维

我有这个帮手:

agreed: function (){
        if (Meteor.users.findOne({_id: Meteor.userId(), profile: {agreedTermsOfUse: 'true'}}))
            return true;
    }

在我检查的页面上,我有以下内容:

{{#unless agreed}}
      agree form
{{else}}
   Create item form.
    {{list of item}}
{{/unless}}

到目前为止,一切顺利。用户进行注册,然后他可以创建一个项目并将其呈现在项目列表中。

现在,我添加了另一个Meteor.call,当在客户端上成功调用该返回项时,该Meteor.call将创建项添加到用户的profile.hasItems中。

然后,在获得该方法的成功之后,“除非”返回false,否则我必须再次提交同意表格。

我想念什么?谢谢。

"submit .create_restaurant": function (event) {
    event.preventDefault();
    var text = event.target.create_restaurant.value;
    Meteor.call('CreateRest', Meteor.userId(), text, function(error, result){
        if(error){

        }else{
                console.log(result, Meteor.userId());
                Meteor.call('userRestaurants', result, Meteor.userId(), function (error, result) {

                    if (error) {
                        alert(123);
                    } else {
                        console.log(result);
                    }

                })

        }
    }
    );
    event.target.create_restaurant.value = "";
}

方法:

'CreateRest': function(user_id, title) {
    check(title, String);
    check(user_id, String);
    return callback = Restaurants.insert({
        createdBy: user_id,
        createdAt: new Date(),
        title: title
    });

},

'userRestaurants': function(rest_id, createdBy) {
    var restId = checkHelper(rest_id, createdBy);
    if(restId)
    console.log(rest_id, createdBy);
    {
    var callback = Meteor.users.update(
        createdBy,
        {$addToSet: {'profile.hasRestaurants': restId}}
    );
    return callback;
    }
}
焦油

我不知道您为什么会看到自己的行为,但是我确实知道您还有其他问题需要首先解决:)

  1. 您有一个巨大的安全漏洞-您正在将用户ID从客户端传递给方法。这意味着任何人都可以简单地打开浏览器控制台并使用自己喜欢的所有者身份创建一个餐厅。而是在方法中使用this.userId获取调用者的ID。

  2. 为什么要往返服务器?只需让第一种方法更新客户端即可。

因此,如下所示(未经测试,在此处手工编写):

"submit .create_restaurant": function (event) {
    event.preventDefault();
    var text = event.target.create_restaurant.value;
    Meteor.call('CreateRest',text, function(error, result){
        if(error){
            alert(123);
        }else{
            console.log(result);
        }
    });
    event.target.create_restaurant.value = "";
}

和:

'CreateRest': function(user_id, title) {
    check(title, String);
    check(this.userId, String);

    userId = this.userId;

    Restaurants.insert({
        createdBy: userId,
        createdAt: new Date(),
        title: title
    }, function(err, restId) {
       if (err) throw new Meteor.Error(err);
       Meteor.users.update(
        userId,
        {$addToSet: {'profile.hasRestaurants': restId}},
        function (err, res) {
           if (err) throw new Meteor.Error(err);
           return restId;
        }
      );
    });

一旦正确实施,它可能会开始工作。如果不是,则问题与您发布的代码无关。

最后请注意,从架构角度来看,您拥有profile.hasRestaurants确实很奇怪。要查找用户拥有的餐厅,您只需在“餐厅”集合上进行查找。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

流星助手返回后执行代码

来自分类Dev

重新运行模板助手时流星模板未更新

来自分类Dev

流星全球效用助手

来自分类Dev

流星全球工具助手

来自分类Dev

流星-用户登录后模板未更新

来自分类Dev

流星模板和模板助手

来自分类Dev

流星助手返回可用的类

来自分类Dev

如何从流星模板助手返回模板?

来自分类Dev

流星条件HTML使用助手

来自分类Dev

流星,动态更改模板助手数据

来自分类Dev

如何使流星助手不活跃?

来自分类Dev

流星模板助手的全局功能

来自分类Dev

流星-通过助手更改DOM

来自分类Dev

流星:“模板助手中的异常”

来自分类Dev

流星助手之间的算术运算

来自分类Dev

与流星助手一起上课

来自分类Dev

Coffeescript中的流星模板助手

来自分类Dev

模板助手的流星火焰错误

来自分类Dev

流星-通过助手进行DOM更改

来自分类Dev

将变量传递给流星助手

来自分类Dev

助手绑定未更新

来自分类Dev

助手绑定未更新

来自分类Dev

使用流星模板助手获取DOM元素

来自分类Dev

流星大火:通过模板助手访问UI.contentBlock

来自分类Dev

在模板上添加流星助手方法的新旧方法

来自分类Dev

无法在流星模板助手中设置属性

来自分类Dev

如何在流星中干燥模板助手?

来自分类Dev

流星模板助手:{{keyname}}显示为空白

来自分类Dev

流星助手通过单个模板变量多次调用