2015-08-15 40 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

相關問題