async search(login) {
fs.readFile(`${__dirname}/data/users.json`, (err, data) => {
if(err) return false
// Convert to JSON
let parsed = JSON.parse(data.toString())
// If user found, return functions. If not - true (data is correct, but user not exists)
parsed.forEach((user, i) => {
console.log('Parsing users. Index', i, 'Data:', user)
console.log(`${user.auth.login} = ${login},`, user.auth.login === login)
if(user.auth.login === login) {
console.log('All ok')
return {
validPassword: password => {
return user.auth.password === argon.hash(crypt.decrypt(password, 'smthkey').toString()).toString()
},
getProfile: () => {
return user.profile
},
getID: () => {
return user.id
}
}
}
})
console.log('Nothing is found')
return true
})
}
Там стоит return, который, по-идее, должен завершить выполнение функции
Примечание: Не существует способа остановить или прервать цикл forEach() кроме как выбрасыванием исключения. Если вам необходимо такое поведение, метод forEach() неправильный выбор.
const fs = require('fs').promises
fs.readFile(file, 'utf-8')