在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"}