[英]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.