我是Node新手,我正在構建一個依賴於文件系統的小應用。如何確定兩個客戶端沒有同時請求損壞狀態
比方說,我的應用程序的目標是,以填補一個文件是這樣的:
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