์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ชจ๊ฐ์ฝ
- ํ์ด์ฌ
- CSS
- mongodb
- ํ๋ก ํธ์๋
- KDT
- ์๊ณ ๋ฆฌ์ฆ
- ๋๋ฆผ์ฝ๋ฉ
- Python
- heapq
- ์ฝ๋ฉ์ ํ
- react
- ์ฝ๋ฉํ ์คํธ
- ๊ทธ๋ฆฌ๋
- JS
- node.js
- ๋ ธ๋ง๋์ฝ๋
- HTML
- ๊ฐ๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ฉ
- javascript
- ํ ์ดํ๋ก์ ํธ
- ํ๋ก์ ํธ
- ํฌ๋กค๋ง
- Til
- ๊ตญ๋น์ง์
- error
- fe
- ๋ฐฑ์ค
- Today
- Total
๐ฑ → ๐ณ
[node.js] File-System(promise, async/await) ๋ณธ๋ฌธ
๐ file-system
: node์ ๋ชจ๋์ด๋ผ commonJS ๋ฐฉ์์ผ๋ก ๋ถ๋ฌ ์ฌ ์ ์์
const fs = require('fs');
โ readFile
: ํ์ผ์ ์ฝ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
ํ์ผ์ ์ฝ๋ ๊ฒ๋ ์๊ฐ์ด ํ์ํ ์์ ์ด๋ฏ๋ก -> callback ์ฌ์ฉ
fs.readFile('ํ์ผ์์น','์ ๋์ฝ๋ํฌ๋งท',callback(err, data) {})
err : ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ์๋์์ ๋, error ์ฝ๋ ๋ฐํ
data: ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ๋์์ ๋, ์ฝ์ data ๋ฐํ
const fs = require('fs');
fs.readFile('readme.txt', 'utf-8', (err, data) => {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
โ writeFile
: ํ์ผ์ ์ฝ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
fs.writeFile('ํ์ผ์์น, data, '์ ๋์ฝ๋ํฌ๋งท, callback(err) {})
writeFile์ data๋ ์๊ณ , ์ฐ๊ธฐ๊ฐ ์ ์๋์์ ๋ err ๋ฐํ
const fs = require('fs');
const str = 'ํ์ผ ์ฐ๊ธฐ๊ฐ ์ ์์ ์ผ๋ก ๋๋์ง ํ
์คํธ ํฉ๋๋ค.';
fs.writeFile('readme.txt', str, 'utf-8', (err) => {
if (err) {
console.log(err);
} else {
console.log('writefile succeed');
}
});
๐ file-system with Promise
- callback ๋ฐฉ์์ ์ฌ์ฉ ๋ฐ ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ FS๋ ์ ์ด์ promise๋ฐฉ์์ ๊ธฐ๋ฅ์ ์ ๊ณต
- ๊ธฐ์กด ๋ฉ์๋๋ช ๋ค์ sync๋ฅผ ๋ถ์ด๋ฉด promise ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋๊ธฐ์ ์ผ๋ก ์๋
- ๋จ, sync๊ฐ ๋ถ์ ๋ฉ์๋๋ ๋ ์ด์ callback ํจ์๊ฐ ํ์ ์์ผ๋ฏ๋ก ์์จ์ค๋๋จ
๐ 1,2,3,4๋ฒ์ ์์๋๋ก ์ถ๋ ฅํ๊ธฐ ์ํ ๊ธฐ์กด callback ๋ฐฉ์ ์ฝ๋
const fs = require('fs');
fs.readFile('./readme.txt', (err, data) => {
if (err) {
throw err;
}
console.log('1๋ฒ', data.toString());
fs.readFile('./readme.txt', (err, data) => {
if (err) {
throw err;
}
console.log('2๋ฒ', data.toString());
fs.readFile('./readme.txt', (err, data) => {
if (err) {
throw err;
}
console.log('3๋ฒ', data.toString());
fs.readFile('./readme.txt', (err, data) => {
if (err) {
throw err;
}
console.log('4๋ฒ', data.toString());
});
});
});
});
๐promise ๋ฐฉ์์ผ๋ก ๊ตฌํ
const fs = require('fs');
let data = fs.readFileSync('./readme.txt');
console.log('1๋ฒ', data.toString());
data = fs.readFileSync('./readme.txt');
console.log('2๋ฒ', data.toString());
data = fs.readFileSync('./readme.txt');
console.log('3๋ฒ', data.toString());
data = fs.readFileSync('./readme.txt');
console.log('4๋ฒ', data.toString());
๐ซ ํ์ง๋ง, sync๊ฐ ๋ถ์ ์ฝ๋๋ ์๋ฒ ์์์ ์๋ ํ ๋ ์ ์์ ์ผ๋ก ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ๋น๋ฒ
-> fs ์ธ ๋๋ fs.promise๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํด์ผํจ
fs.promise ์ค์ค๋ก ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ๋จํ์ฌ resolve, reject๋ฅผ ๋ฐํ
๐ promise
promise๋ ์ผ์ข ์ class ์ด๋ฏ๋ก new ์ฌ์ฉ
const promise = new Promise(function(resolve, reject) {});
- resolve, reject๋ผ๋ 2๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฝ๋ฐฑํจ์๋ก ๋ฐ์์ ์ฌ์ฉ
- promise๊ฐ ํ ๋น๋๋ฉด ์ด promise๋ resolve ๋๋ reject ํจ์๊ฐ callback์ด ๋ ๋ ๊น์ง ๋ฌดํ ๋๊ธฐ
- resolve: promise๊ฐ ์ ์์ ์ผ๋ก ์ดํ ๋์์ ๊ฒฝ์ฐ ์ฌ์ฉ / then์ผ๋ก ๋ฐ์
- reject: promise๊ฐ ์ ์์ ์ผ๋ก ์ดํ๋์ง ์์์ ๊ฒฝ์ฐ ์ฌ์ฉ / catch๋ก ๋ฐ์
- resolve, reject ๋ ๋ฐ์ดํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ณด๋ผ ์ ์์
resolve, reject๊ฐ ์ฌ์ฉ๋์ง ์์ผ๋ฉด promise๋ ํด๋น ์ฝ๋ฐฑ์ด ๋์ฌ ๋ ๊น์ง pending ์ํ๊ฐ ๋์ด ๊ธฐ๋ค๋ฆผ
๐ ์์ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ fs.promise๋ก ๋ณํ
const fs = require('fs').promises;
fs.readFile('./readme.txt')
.then((data) => {
console.log('1๋ฒ', data.toString());
return fs.readFile('./readme.txt');
})
.then((data) => {
console.log('2๋ฒ', data.toString());
return fs.readFile('./readme.txt');
})
.then((data) => {
console.log('3๋ฒ', data.toString());
return fs.readFile('./readme.txt');
})
.then((data) => {
console.log('4๋ฒ', data.toString());
})
.catch((err) => {
throw err;
});
๐ async/await
function ์์ async๋ฅผ ๋ถ์ด๋ฉด ํด๋น ํจ์๋ ํญ์ Promise ๋ฐํ
async๊ฐ ๋ถ์ ํจ์์์ return์ ์ฐ๋ฉด ์๋์ ๋์ผํ ์ญํ ์ ํจ
async function f1() {
return 1;
}
function f2() {
return Promise.resolve(1);
}
async๊ฐ ๋ถ์ ํจ์ ๋ด๋ถ์๋ await ์ฌ์ฉ ๊ฐ๋ฅ
await๋ promise๊ฐ ๊ฒฐ๊ณผ(resolve, reject)๋ฅผ ๊ฐ์ ธ๋ค ์ค ๋ ๊น์ง ๊ธฐ๋ค๋ฆผ
(๋จ, async๋ ํจ์์ ๋ถ์ฌ์ผ ํ๋ฏ๋ก ๋ณ๋์ ํจ์ ๋ด๋ถ์ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ํด๋น ํจ์๋ฅผ ์ธ๋ถ์์ ํ๋ฒ ์ฌ์ฉํด ์ค์ผํจ)
๐์ฝ๋ ์์
const fs = require('fs').promises;
async function main() {
let data = await fs.readFile('./readme.txt');
console.log('1๋ฒ', data.toString());
data = await fs.readFile('./readme.txt');
console.log('2๋ฒ', data.toString());
data = await fs.readFile('./readme.txt');
console.log('3๋ฒ', data.toString());
data = await fs.readFile('./readme.txt');
console.log('4๋ฒ', data.toString());
}
main();
๐ routing
: ๋คํธ์ํฌ ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๋ ๊ณผ์
โ file-system์ผ๋ก DB๊ตฌํ
database.json ํ์ผ ์์ฑ ํ ์ฝ๋ ์์ฑ
getPosts() : database.json์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ณ์๋ก ๋ณํํด์ฃผ๋ ํจ์
savePosts(): ๋ณ๊ฒฝ ์ฌํญ์ database.json์ ์ ์ฅํ๋ ํจ์
const fs = require('fs');
async function getPosts() {
const jsonPosts = await fs.promises.readFile('database.json', 'utf-8');
return JSON.parse(jsonPosts).posts;
}
async function savePosts(posts) {
const content = {
posts,
};
return fs.promises.writeFile('database.json’, JSON.stringify(content), 'utf-8');
}
'Server > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[node.js] Error Handling (1) | 2022.09.24 |
---|---|
[node.js] View Engine(ejs, pug, nunjucks) (0) | 2022.09.24 |
[node.js] DOTENV, ์ค์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋ (0) | 2022.09.19 |
[node.js] Express ๊ธฐ๋ณธ ํด๋ ๊ตฌ์กฐ (0) | 2022.09.05 |
[node.js] URL ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๋ฐฉ๋ฒ (0) | 2022.09.02 |