文件迭代以在 node.js 中搜索相似的短语
File iteration to search for similar phrases in node.js
我有具体问题:
该函数负责读取文件
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')
}
}
我还从客户端收到带有 email 的请求,我将此参数传递为 email
文件结构为:
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest@gmail.com"}
如何遍历 data.json 文件来搜索与传递的参数相同的短语? -
需要避免再次向文件添加相同的数据。
您可以逐行迭代并使用回调,return true 或 false 以指示电子邮件是否存在。 (最好的方法是使用数据库甚至 bash 命令来完成此任务,但这是我针对 Node.js 的解决方案)
'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}`);
});
data.txt的内容:
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest1@gmail.com"}
希望对您有所帮助。如果对解决方案有任何不清楚的地方,请告诉我。
我有具体问题:
该函数负责读取文件
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')
}
}
我还从客户端收到带有 email 的请求,我将此参数传递为 email
文件结构为:
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest@gmail.com"}
如何遍历 data.json 文件来搜索与传递的参数相同的短语? - 需要避免再次向文件添加相同的数据。
您可以逐行迭代并使用回调,return true 或 false 以指示电子邮件是否存在。 (最好的方法是使用数据库甚至 bash 命令来完成此任务,但这是我针对 Node.js 的解决方案)
'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}`);
});
data.txt的内容:
{"username":"test","email":"testtest@gmail.com"}
{"username":"test","email":"testtest1@gmail.com"}
希望对您有所帮助。如果对解决方案有任何不清楚的地方,请告诉我。