SQLite가 있는 Node.js

5682 단어 sqlbeginnersnode
몇 주 전에 Node.js로 POST 요청을 처리하는 방법에 대한 기사를 작성했습니다. 데이터 지속성을 구현하는 방법에 대한 간략한 설명과 함께 해당 기사를 따르고 싶었습니다. 불행히도, 나는 예상보다 조금 바빠서 연기해야 ​​했습니다.

시작하기 전에 빌드된 프로젝트를 참조하겠습니다.

먼저 SQLite 및 PATH에 실행 파일에 대한 참조가 있는지 확인하십시오.

프로젝트 작업 디렉토리의 최상위 레벨에도 db 폴더를 추가합니다. 파일 구조는 다음과 같아야 합니다.

controllers
    app_controller.js
    items_controller.js
db
views
    items
        index.html
        new.html
    index.html
app.js

이제 SQLite 데이터베이스를 만들고 items 열이 있는 value 테이블을 만듭니다.

작업 디렉터리의 최상위 수준에 있다고 가정하고 다음 명령을 입력합니다.

cd db
sqlite3 development.db
create table items(value string);
insert into items values("item 1");
.exit
cd ..

다음으로 Node.js 패키지sqlite3를 설치합니다. 다음 명령을 입력하고 패키지가 설치될 때까지 기다립니다.

npm install sqlite3

items_controller.js를 열고 파일 상단에 다음 변경 사항을 구현하십시오.

...
const sqlite3 = require("sqlite3");

const items = [];
const db = new sqlite3.Database("./db/development.db");
db.all("SELECT * FROM items", (error, rows) => {
    if (error) throw error;
    for (const row of rows) {
        items.push(row.value);
    }
});
...

여기에서 데이터베이스에 대한 연결을 설정하고 쿼리SELECT * FROM items를 실행하여 테이블에서 행 컬렉션을 가져오는 것을 볼 수 있습니다. 그런 다음 검색된 데이터로 무엇을 하고 싶은지 결정하기 위해 콜백을 활용합니다. 이 경우 컬렉션을 반복하고 각 항목의 값 열 값을 항목 배열에 저장합니다.

애플리케이션을 실행하고 localhost:3000/items 로 이동하면 이전에 데이터베이스에 삽입한 항목의 값이 정렬되지 않은 목록에 나타나는 것을 볼 수 있습니다.

이제 항목 양식에서도 POST 요청을 통해 제출된 항목을 저장할 수 있기를 원합니다. 이를 위해 요청 종료 이벤트의 콜백 내에서 sqlite3 패키지를 활용합니다.

항목 컨트롤러 내에서 request.on에 대한 호출을 찾고 다음과 같이 보이도록 콜백을 편집합니다.

...
request.on("end", () => {
    const parsedBody = qs.parse(body);
    items.push(parsedBody.value);
    const insert = db.prepare("INSERT INTO items VALUES(?)");
    insert.run(parsedBody.value);
    insert.finalize();
});
...

이전에 실행한 쿼리와 마찬가지로 데이터베이스를 생성할 때 INSERT INTO items VALUES(?) 가 있음을 알 수 있습니다. 이것은 구문 분석된 본문 내에서 값 키의 값을 전달하려는 템플릿 쿼리입니다. 값을 insert.run 에 전달하고 insert.finalize 를 호출하여 명령문을 마무리함으로써 이를 달성합니다.

애플리케이션을 실행하고 localhost:3000/items/new 로 이동하면 이전과 마찬가지로 항목 인덱스 경로로 리디렉션되고 항목이 목록에 나타나는 것을 보기 전에 값을 입력하고 제출할 수 있어야 합니다. 그러나 응용 프로그램을 종료할 수도 있고 응용 프로그램을 다시 실행할 때 localhost:3000/items 에서 지속 목록을 찾을 수도 있습니다.

API 설정을 위한 JSON 렌더링에 대해 설명하고 싶었지만 다음 주 게시물을 위해 저장하려고 합니다. 다음 주에는 다른 두 가지 CRUD 작업인 업데이트 및 삭제를 활용하도록 이 프로젝트를 확장할 계획입니다.

좋은 웹페이지 즐겨찾기