2016-05-12 77 views
0

我嘗試使用remove()for for循環中的每個集合項目,並且似乎是成功的。但是,這些項目仍在收藏中。如果有一種方法可以通過JavaScript來完成,我會很樂意完全刪除這個集合。如何永久刪除forerunnerdb中的集合?

下面是每個刪除()後返回的對象 - 在執行console.log:

deleted ID1[object Object] 
dbsetup.js:304 1 - deleted ID2[object Object] 
dbsetup.js:304 2 - deleted ID1ee7978aa5ddc20[object Object] 
dbsetup.js:304 3 - deleted ID2899af1e797ff00[object Object] 
dbsetup.js:304 4 - deleted ID2234cd96dac8380[object Object] 
dbsetup.js:304 5 - deleted ID348a5bcd5f0f600[object Object] 
dbsetup.js:304 6 - deleted ID490930bb2589c80[object Object] 

這裏是我的功能,它使用先進的remove():

function removeAllGames() { 
    var gameArray = games.find(); 
    var gameID; 
    var deletedObject; 
    var len = gameArray.length; 

    for (var i=0;i<len;i++) { 
     gameID = gameArray[i]._id; 

     deletedObject = games.remove({ 
      _id: gameID 
     }); 
     console.log(i + " - " + "deleted ID" + gameID + deletedObject); 
    } 
} 

我會報告我的進步 - 感謝您的幫助!

回答

0

我想通了!我需要在remove()函數後使用save()函數。這樣做後,永久從收藏中刪除的物品。我仍然需要弄清楚如何刪除集合本身,但現在這足以完成工作。

我建議看看forerunnerdb教程,而不僅僅依賴於github上的文檔(就像我一樣)。教程給出瞭如何正確保存的工作示例。

+0

collection.remove() - 刪除整個集合 –

+0

@ T-Bulford collection.remove()不會刪除集合,它將用於從集合中刪除文檔。 collection.drop()將會刪除(殺死,刪除等)集合。 –

2

ForerunnerDB在內存中運行。這意味着如果您從永久存儲裝載數據,然後通過ForerunnerDB的CRUD方法(插入,更新,刪除)對其進行修改,那麼您正在修改內存數據。

如果您希望新版本的數據覆蓋當前持久數據,您需要調用.save()。

爲了清楚使用情況,collection.remove()將從集合中刪除所有文檔,但不會將該刪除保留到存儲中,直到您在之後調用.save()爲止。

持久存儲是ForerunnerDB的插件,而不是內置於內核,因爲ForerunnerDB的主要用途是作爲用於操縱JSON數據的內存存儲,而某些用戶可能不想持久存儲。這就是爲什麼你必須調用.load()和.save()來從永久存儲裝載數據並分別保存數據。

類似於insert()和remove()的CRUD調用正在與ForerunnerDB的核心進行通信,而load()和save()方法正在與持久性插件交談。

(來源:我寫了ForerunnerDB和所有的插件)。