2015-08-15 94 views
0

我试图删除集合的对象,但我遇到这个错误的:Meteor.js集合中删除错误:变异的[[原型]]对象

mutating the [[Prototype]] of an object will cause your code to run very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create

这里是我的代码:

Activities = new Mongo.Collection("activities");  

// some code 

Template.weekday.events({ 

    'click .delete_activity': function(event) { 
     Activities.remove({day: this.valueOf()}); 
    } 

}); 

有趣的是,它的工作原理当我这样做,而不是:

'click .delete_activity': function(event) { 
    var activity = Activities.findOne({day: this.valueOf()}); 
    Activities.remove(activity._id); 
} 

可能有人请向我解释这是为什么出现?谢谢。

回答

1

这里有两个问题:

  1. 首先是“为什么?我看到了有关原型,消息”
  2. 第二个是关于“为什么我的代码抛出一个错误?”

让我从第一个开始。你看到该消息的原因是由于流星是围绕与你使用Firefox时,原来的Error对象原型搞乱:

https://github.com/meteor/meteor/blob/devel/packages/meteor/errors.js#L16

关于第二个问题。该错误被抛出,因为对于客户端代码中的安全性,您只能通过它们的ID从集合中移除元素。你只能做这样的事情:

Activities.remove({day: this.valueOf()}); 

服务器端。这可以通过首先获取所需的元素,然后通过id删除它们来轻松解决,这与您在示例中的方式完全相同。

+0

这是一个错误。 Firefox也在下一行打印出'Error',并且该对象没有从数据库中删除。 – mikeecb

+0

酷,所以这是你的代码中的错误,你需要修复。但是你的问题是关于“警告”的信息吧?我在这里错过了什么吗? –

+0

“警告”消息是一条错误消息。我改变了上面的代码,所有的错误信息都没有了。我想知道是否有原因导致错误。 – mikeecb

相关问题