Я новичок в Node JS, и я создаю небольшое приложение, основанное на файловой системе.Как убедиться, что два клиента не запрашивают в то же время повреждающее состояние
Допустим, что цель моего приложения, чтобы заполнить файл, как это:
1
2
3
4
..
И я хочу, чтобы при каждом запросе, новая строка записывается в файл, и в правильном порядке.
Могу ли я достичь этого?
Я знаю, что не могу задать свой вопрос здесь, не делая никакого кода, так вот. Я использую сервер Экспресс JS:
(представим себе, что файл содержит только 1
при первом запуске кода)
import express from 'express'
import fs from 'fs'
let app = express();
app.all('*', function (req, res, next) {
// At every request, I want to write my file
writeFile()
next()
})
app.get('/', function(req,res) {
res.send('Hello World')
})
app.listen(3000, function (req,res) {
console.log('listening on port 3000')
})
function writeFile() {
// I get the file
let content = fs.readFileSync('myfile.txt','utf-8')
// I get an array of the numbers
let numbers = content.split('\n').map(item => {
return parseInt(item)
})
// I compute the new number and push it to the list
let new_number = numbers[numbers.length - 1] + 1
numbers.push(new_number)
// I write back the file
fs.writeFileSync('myfile.txt',numbers.join('\n'))
}
Я попытался сделать предположение о синхронном процессе, который заставил меня думать, что я был уверен, что ничего не было сделано в тот же момент, но я был действительно уверен, что внимание ...
Если я неясно, скажите, пожалуйста, в комментариях
Является ли это проблемой XY или вы действительно просто пишете в файл число, увеличивающееся число экземпляров? – mscdex
После прочтения определения, я думаю, это может быть. Но решение этой проблемы действительно поможет мне понять поведение узла, я думаю. – Hammerbot