在node.js中搜索类似短语的文件迭代
我有一个具体问题: 此函数负责读取文件在node.js中搜索类似短语的文件迭代,node.js,file,loops,phrase,Node.js,File,Loops,Phrase,我有一个具体问题: 此函数负责读取文件 function readFile (email){ fs.readFile('./files/data.json', 'utf8', (err, fileContents) => { if (err) { console.error(err) return } try { const data = fileContents console.log(data) } c
function readFile (email){
fs.readFile('./files/data.json', 'utf8', (err, fileContents) => {
if (err) {
console.error(err)
return
}
try {
const data = fileContents
console.log(data)
} catch(err) {
console.error(err)
}
})
if(email = (how can iterate file in search of phrases?){
console.log('identic')
}
else{
console.log('ok')
}
}
另外,我通过电子邮件收到客户的请求我将此参数传递为电子邮件
文件的结构是:
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest@gmail.com"}
如何迭代data.json文件以搜索与所传递参数相同的短语
需要避免再次向文件中添加相同的数据。您可以逐行迭代并使用回调,返回true或false以指示电子邮件是否存在。(最好的方法是使用数据库甚至bash命令来完成这项任务,但下面是我针对Node.js的解决方案)
希望能有帮助。如果有关解决方案的某些内容不清楚,请告诉我。如何转换此函数以返回:true(如果文件中存在电子邮件)或false(如果文件中不存在电子邮件)?我需要依赖它用另一个指令Ok创建条件,我考虑并实现了:if(exist==true){console.log('exist')res.status(400).send('text')}if(exist==false){storeData(data),./files/data.json');res.status(200).send('Ok')}
'use strict';
const fs = require('fs');
const lineReader = require('readline').createInterface({
input: fs.createReadStream('./data.txt'),
});
/**
* Check if a given email exist or not inside data.txt file
* @param {String} email
* @param {Function} callback
* @returns {Object<error, emailIsDuplicated>}
*/
function existEmail(email, callback) {
let callbackWasExecuted = false;
lineReader.on('line', async (line) => {
try {
const jsonLine = JSON.parse(line);
if (email === jsonLine.email) {
callbackWasExecuted = true;
return callback(null, true);
}
} catch (e) {
callbackWasExecuted = true;
return callback(new Error(`Error parsing to json next line: ${line}`));
}
});
lineReader.on('close', () => callbackWasExecuted === false && callback(null, false));
}
existEmail('testtest1@gmail.com', (error, exist) => {
if (error) {
return console.error(error);
}
console.log(`Result exist email: ${exist}`);
});
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest1@gmail.com"}