什麼是ORM?
簡單的講就是對SQL查詢語句的封裝,讓我們可以用OOP的方式操作數據庫,優雅的生成安全、可維護的SQL代碼。直觀上,是一種Model和SQL的映射關係。
sequelize.query(原始查詢)
默認情況下,函數將返回兩個參數 - 一個結果數組,以及一個包含元數據(受影響的行等)的對象。 請注意,由於這是一個原始查詢,所以元數據(屬性名稱等)是具體的方言。 某些方言返回元數據 "within" 結果對象(作爲數組上的屬性)。 但是,將永遠返回兩個參數,但對於MSSQL和MySQL,它將是對同一對象的兩個引用。
const result1 = await mysql.query('SELECT id, img_url, url from carousel where status = 1');
//返回值是兩個相同元素組成的數組
"result1": [
[
{
"id": 1,
"url": "/ClassDetail?id=4"
},
{
"id": 4,
"url": "/ClassDetail?id=2"
}
],
[
{
"id": 1,
"url": "/ClassDetail?id=4"
},
{
"id": 4,
"url": "/ClassDetail?id=2"
}
]
]
解決辦事有兩種
- 傳遞一個查詢類型來告訴後續如何格式化結果
const result= await mysql.query('SELECT id, img_url, url from carousel where status = 1', {
replacements: {},
type: mysql.QueryTypes.SELECT
}); - 傳遞模型
const Carousel = require('../../models/Carousel');
const result2 = await mysql.query('SELECT id, img_url, url from carousel where status = 1',{ model: Carousel });