[node.js]TypeORM CRUDの例で説明


緒論


前回のレッスンでは、Express開発環境でTypeORMを構成する方法について説明しました.
この記事では、スキーマで作成されたテーブルにデータを挿入、削除、変更、クエリーする方法を例に示します.
TypeORM開発環境が設定されていない人はここです。を参照してください.
まず,以前の文書で実装したindex.ts文書のコードを以下のように修正した.

app.listen()関数の変更

app.listen(3000, () => {
    console.log('Starting Server with 3000 port');

    createConnection().then(async connection => {
        console.log("디비 연결 성공");
    
    }).catch(error => console.log(error));

});
以前は,デバイス接続と同時にユーザテーブルにデータを追加する論理を実現していた.
ただし,この文書ではCRUDは要求関数ごとに区切られているため,デバイス接続が成功したときに追加されたデータ論理を削除し,データベース接続が成功したか否かに関するメッセージのみを表示するように変更した.

「クエリー」(Read)関数の定義


既存のapp.get('...')部の関数はすでにユーザテーブルのすべてのデータをクエリーするコードであり、変更せずにスキップされている.コードは次のとおりです.
app.get('/', async (req: Request, res: Response, next: NextFunction) => {
    const users = await User.find();
    res.send(users);
});

「追加」(Insert)関数の定義

app.post('/', async (req: Request, res: Response, next: NextFunction) => {
   const user = new User();

   const {
        firstName,
        lastName,
        age
   } = req.body;
   
   user.firstName = firstName;
   user.lastName = lastName;
   user.age = age;

   await user.save().then((user) => {
       res.status(201).send(user);
   })
   .catch((err) => {
        res.status(400).send(err);
   });
});
req.bodyで3つの変数を受信し、対応する値を保存します.結果を確認するために、郵便配達人にPOSTリクエストを送信しました.図に示すように、POST要求をlocalhost:3000アドレスに送信すると、201の応答結果と、どのようなデータが格納されているかが得られる.実際のデータベースで確認しても、データが正しいことを確認できます.

Update関数の定義

app.patch('/', async (req: Request, res: Response, next: NextFunction) => {
    await User.update({
        id: 1, // 첫번째 {} 에는 조건이 온다.
    }, {
        age: 30, // 두번째 {} 에는 변경할 컬럼과 값을 정의한다.
    }).then((result) => {
        res.status(200).send(result);
    }).catch((err) => {
        res.status(400).send(err);
    });
});
データの更新にはbaseEntityが提供するupdate()メソッドを使用します.
パラメータの最初にデータを変更する条件を入力し、2番目のパラメータは変更するカラム名と変更する値を定義します.結果は以下の通りです.およびデータベースにより、id=1を有するインスタンスのage値が30になることがわかる.

削除関数の定義

app.delete('/', async (req: Request, res: Response, next: NextFunction) => {
    await User.delete({firstName: 'minsu'}) // 조건을 주지 않으면 모든 데이터가 삭제된다.
    .then((result) => {
        res.status(204).send(result);
    })
    .catch((err) => {
        res.send(err);
    })
});
データの削除にはdelete()メソッドが使用されます.また、データを削除する際に何の条件も与えなければ、すべてのデータが削除される可能性があるため、上記の条件でフィルタされたデータのみが削除される.Postmanで確認した結果は次のとおりです.とデータベースを使用すると、クエリ時に空のテーブルが表示されます.