节点存储 在创建新存储之前关闭存储并保存更改



我在以下代码中使用节点存储将值存储在文件中,但是当我创建新的存储对象时,尚未保存来自另一个存储对象的更改。我需要一种方法在创建新的存储对象之前保存更改。

下面是一个名为 code 的程序.js我在控制台中像这样运行它:node code.js .如果你运行它,你会看到第一次运行时键值对还不存在,但第二次它确实存在。

key = "key"
storage = require('node-storage')
const store1 = new storage("file")
const store2 = new storage("file")
store1.put(key,'val')
console.log(store2.get(key))

我这样做的动机是我希望能够有一个名为"set"的函数,它接受一个键和一个值,并在存储在文件中的值字典中设置键值对。我希望以后能够引用此字典,例如"get"函数,并进行更改。

我认为可能有一个名为"保存"或类似功能的函数可以将更改应用于文件。有这样的功能或其他解决方案吗?

节点存储会在每次调用putremove后将字典中的更改保存到磁盘。这不是问题所在。

您的问题是store2中的字典尚未使用新属性进行更新。 节点存储仅在首次创建对象时从磁盘加载文件。

我的建议是每个文件只有一个存储实例。

但是,如果这是不可能的,那么您可能需要考虑在获取属性之前更新store2 的缓存。这可以使用以下方法完成:

store2.store = store2._load();

这可能不是最佳的性能,因为每次调用_load时都会从磁盘同步加载整个文件,因此请尝试限制其使用。

最新更新