我在以下代码中使用节点存储将值存储在文件中,但是当我创建新的存储对象时,尚未保存来自另一个存储对象的更改。我需要一种方法在创建新的存储对象之前保存更改。
下面是一个名为 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"函数,并进行更改。
我认为可能有一个名为"保存"或类似功能的函数可以将更改应用于文件。有这样的功能或其他解决方案吗?
节点存储会在每次调用put
或remove
后将字典中的更改保存到磁盘。这不是问题所在。
您的问题是store2
中的字典尚未使用新属性进行更新。 节点存储仅在首次创建对象时从磁盘加载文件。
我的建议是每个文件只有一个存储实例。
但是,如果这是不可能的,那么您可能需要考虑在获取属性之前更新store2
的缓存。这可以使用以下方法完成:
store2.store = store2._load();
这可能不是最佳的性能,因为每次调用_load
时都会从磁盘同步加载整个文件,因此请尝试限制其使用。