如何在forerunnerdb中永久删除集合?

时间:2016-05-12 22:04:31

标签: javascript mongodb forerunnerdb

我尝试在for循环中为每个集合项使用remove(),这似乎是成功的。但是,这些项目仍在集合中。如果有办法通过JavaScript完成,我将很乐意完全删除该集合。

以下是每个remove()后返回的对象 - 在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]

这是我使用forerunner删除()的函数:

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);
    }
}

我会报告我的进展 - 感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

ForerunnerDB在内存中运行。这意味着如果您从持久存储加载数据,然后通过ForerunnerDB的CRUD方法(插入,更新,删除)修改它,那么您正在修改内存数据。

如果您希望新版本的数据覆盖当前持久化的数据,则需要调用.save()。

为了明确用法,collection.remove()将删除集合中的所有文档,但在您之后调用.save()之前,它不会保留删除存储。

永久存储是ForerunnerDB的插件,而不是内核到内核,因为ForerunnerDB的主要用途是作为内存存储来操作JSON数据,而某些用户可能不希望持久化。这就是为什么你必须调用.load()和.save()来从持久存储加载数据并分别保存数据的原因。

像insert()和remove()这样的CRUD调用正在与ForerunnerDB的核心进行通信,而load()和save()方法正在与持久性插件进行通信。

(来源:我写过ForerunnerDB和所有插件)。

答案 1 :(得分:1)

我明白了!我需要在remove()函数之后使用save()函数。完成此操作后,永久性地从集合中删除的项目。我仍然需要弄清楚如何删除集合本身,但现在这足以完成工作。

我建议查看forerunnerdb教程,而不仅仅是依赖github上的文档(就像我一样)。本教程提供了有关如何正确保存的工作示例。

相关问题