繁体   English   中英

如果数据不存在,只写入文件?

[英]Only write to file if data doesn't exist?

我正在创建一个推送通知服务器,并将订阅存储在一个名为clients.json的 JSON 文件中。 这工作得很好,我可以使用fs.writeFile('clients.json', data, callback) ,它正在工作。 我遇到的问题是,如果 JSON 文件中有多个订阅实例,则服务器会为每个订阅实例多次发送推送事件。

我现在尝试的是,如果文件中不存在订阅 object ,则仅将其写入文件。 我尝试了以下方法:

if (!JSON.parse(fs.readFileSync('clients.json')).endpoints.includes(subscription)) {
    clients.endpoints.push(subscription);
    fs.writeFile('clients.json', JSON.stringify(clients), err=>{if(err){console.log(err)}});
}

对我来说似乎是正确的,但它似乎并不关心我的状况,因为代码块每次都运行并且订阅多次插入到文件中。
如果有帮助,这是clients.json

{
    "endpoints":[
        /* Client subscriptions end up in this array */
    ]
}

任何帮助将不胜感激。

在 js 中,只有原始类型通过它们的值进行比较。 如果subscription是任何类型的 object,与另一个 object 比较时,即使它包含相同的数据,它也会返回false ,因为它们是由他们引用的 object 比较的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM