【问题标题】:NEDB is clearing content of file when app's relauched重新启动应用程序时,NEDB 正在清除文件内容
【发布时间】:2015-04-02 22:52:29
【问题描述】:

我已经写了NodeWebKitApp,我在其中保存了用户的数据(如姓名、uid 和设置)以供以后使用。我可以很好地插入一个文档,我可以看到它的内容。文件大小约为 2KB。

但是,如果我关闭应用程序然后重新打开它,保存的数据会丢失,并且我看到文件大小为 0 字节。

调试,我发现执行以下行时会出现这种行为:

db = new Datastore({ filename: myPath, autoload: true });

我尝试调试nedb/persistance.js,但无法解决问题。我还尝试通过调用loadDatabase(function(err) {}) 手动加载数据库,但没有成功。

这是一段sn-p代码:

var Datastore = require('nedb'),  
..
..
..                                                               
myPath = "<User-Home>/.myApp/user.db",
db = new Datastore({ filename: myPath, autoload: true });

【问题讨论】:

    标签: node.js node-webkit persistent-storage nedb


    【解决方案1】:

    如果您没有使用实际的 insert() 命令将数据插入到 .db 文件中,请确保您的条目对于每个 JSON 行都有一个 _id 字段。

    【讨论】:

      【解决方案2】:

      您确定“/.myApp/user.db”是有效路径吗?你可以试试“./myApp/user.db”。

      【讨论】:

      • 是的,它在用户主目录下的隐藏文件夹。 '/Users/user-home/.myApp/user.db'(在 Mac 上)。我可以写,插入文档后我可以看到文件中的数据。但是,在重新启动应用程序时,它会被清理/清空/覆盖(它发生在我创建 DataStore 的地方)
      • 我尝试使用非隐藏文件夹但同样的问题。它适用于here
      • 在进一步调试时,我看到 loadDatabase 正在创建数据文件,从而导致旧数据丢失。有什么线索吗?
      • 文档建议,如果您使用自动加载,则不要手动调用 loadDatabase(这实际上会覆盖您的文件)。希望该代码不在您的项目中的某个地方。
      • 您可以尝试将 WebKitApp 命名为... var Datastore = require('nedb'), db = new Datastore({filename: myPath, autoload: true, nodeWebkitAppName: 'nwtest' } ); [或任何你的应用名称]
      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      相关资源
      最近更新 更多