TIL - 21.09.02 πŸ‘¨β€πŸ’»

μ„±ν›ˆΒ·2021λ…„ 9μ›” 2일
0

TIL

λͺ©λ‘ 보기
55/59
post-thumbnail

TIL - 21.09.02 πŸ‘¨β€πŸ’»

find λ©”μ†Œλ“œ

findByPk

프라이머 ν‚€(보톡 id)둜 νŠΉμ • λ ˆμ½”λ“œλ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ†Œλ“œμ΄λ‹€.

const db = require('../models')
const Model = db.model

module.exports = {
		get: async (req, res) => {
		const key = req.params.id;
		const record = await Model.findByPk(key);
		return res.status(200).send(record);
	}
}

findOne

μΌμΉ˜ν•˜λŠ” ν•˜λ‚˜μ˜ λ ˆμ½”λ“œλ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ†Œλ“œμ΄λ‹€.

μΌμΉ˜ν•˜λŠ” λ ˆμ½”λ“œκ°€ μ—¬λŸ¬κ°œμ΄λ”λΌλ„, κ°€μž₯ λ¨Όμ € μƒμ„±λœ λ ˆμ½”λ“œ(보톡 idκ°€ κ°€μž₯ μž‘μ€ λ ˆμ½”λ“œ)κ°€ λ°˜ν™˜λ˜λŠ” κ²ƒμœΌλ‘œ λ©”μ†Œλ“œκ°€ μ’…λ£Œλœλ‹€.

const db = require('../models')
const Model = db.model

module.exports = {
		get: async (req, res) => {
		const key = req.params.id;
		const record = await Model.findOne({where: {id: key}});
		return res.status(200).send(record);
	}
}

μœ„μ—μ„œ μž‘μ„±ν•œ findByPk() 둜 μž‘μ„±ν•œ μ½”λ“œμ™€ 같은 λ ˆμ½”λ“œλ₯Ό λ°˜ν™˜ν•œλ‹€.

findOrCreate

쑰건과 μΌμΉ˜ν•˜λŠ” λ ˆμ½”λ“œλ₯Ό μ°Ύκ³  λ§Œμ•½ ν•΄λ‹Ή ν•˜λŠ” λ ˆμ½”λ“œκ°€ μ—†λ‹€λ©΄ λ ˆμ½”λ“œλ₯Ό μƒˆλ‘œ μƒμ„±ν•˜λŠ” λ©”μ†Œλ“œμ΄λ‹€.

const db = require('../models')
const Model = db.model

module.exports = {
		get: async (req, res) => {
		const [result, created] = await Model.findOrCreate({
			// μ—¬κΈ°μ„œ resultλŠ” 쑰건에 μΌμΉ˜ν•΄μ„œ 찾은 λ ˆμ½”λ“œλ‚˜, λ§Œλ“  λ ˆμ½”λ“œκ°€ ν• λ‹Ήλ˜κ³ 
			// createdλŠ” λ§Œλ“  λ ˆμ½”λ“œλ§Œ ν• λ‹Ήλœλ‹€. λ§Œμ•½ 기쑴에 쑰건에 μΌμΉ˜ν•˜λŠ” λ ˆμ½”λ“œλ₯Ό μ°ΎλŠ”λ‹€λ©΄
			// false κ°€ ν• λ‹Ήλœλ‹€.
			where: {column1: data1}, 
			defaults: {column2: data2}
			// defaults λŠ” κΈ°λ³Έ 값이 할당될 데이터가 μžˆμ–΄μ•Όν•˜κ³ , λͺ¨λΈμ— μžˆλŠ” λͺ¨λ“  컬럼이 μ—¬κΈ°μ„œ
			// κΈ°λ³Έ κ°’μœΌλ‘œ ν• λ‹Ήλ˜μ–΄μ•Ό ν•œλ‹€.
			// 쑰건(where)μ—μ„œ μ‚¬μš©λœ column1이 defaultsμ—μ„œ ν• λ‹Ήλ˜μ§€ μ•ŠλŠ”λ‹€λ©΄
			// column1μ—λŠ” data1이 ν• λ‹Ήλœ μ±„λ‘œ λ ˆμ½”λ“œκ°€ μƒˆλ‘œ μƒμ„±λœλ‹€.
		});
		return res.status(201).send(result);
	}
}

Retrospect 🧐

ORM μ–΄λ ΅λ‹€ γ… 
μ§„μ§œ κ³΅λΆ€ν• κ²Œ μ™œ 이리 λ§Žλƒ...

Reference πŸ™‡

https://sequelize.org/master/

profile
μ–΄λ–»κ²Œ 이걸 ν’€μ–΄λ‚Ό 수 μžˆμ„κΉŒ

0개의 λŒ“κΈ€