钩住流星以捕获所有收集方法错误

时间:2015-04-08 18:14:52

标签: javascript meteor

我有一个显示给用户的Errors集合。我想在用户收到错误时插入此集合,因此可以在模板中显示。

我的收藏品中有一些挂钩会拒绝它。

// only admins can create and update plans
Plans.allow({
  insert: function(userId, doc) {
    return Roles.userIsInRoles(userId, 'admin');
  },
  update: function(userId, doc) {
    return Roles.userIsInRoles(userId, 'admin');
  }
});

// Can only have one active plan currently
Plans.deny({
  update: function(userId, doc) {
    var now = new Date();
    Plans.find({
      active: true,
      _id: { $in: doc.planIds },
      dateStart: { $gt: now },
      dateEnd:   { $lt: now }
    }).count() > 0;
  }
});

我的问题是;我可以收听这些事件吗?如果被拒绝,可以在客户端和服务器上执行特定操作吗?

1 个答案:

答案 0 :(得分:1)

您可以通过回调函数在您拥有的任何insert/update/remove上插入集合。

如果您想在服务器上进行操作(唱Meteor.methdos/Meteor.call),这就是工作流程。

<强> JS

 //server
    Meteor.method({
     insertDoc:function(doc){
      Plans.insert(doc)
     }
    })
 //Client
 Errors = new Mongo.Collection(null) //client side only
 Meteor.call('insertDoc',{test:doc},function(err,result){
  if(err){
   Error.insert({error:err.reason}) //if there is a error lets insert it
    }
 })
 //and the helper to show the error.
 Template.example.helpers({
  showError:function(){
    return Error.find();
   }
 })

<强> HTML

<template name="example">
  <span>Sorry there was an error: {{error}}</span>
</template>

你明白了。