Sequelize學習經驗(ORM框架)

什麼是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"
            }
        ]
    ]

解決辦事有兩種

  1. 傳遞一個查詢類型來告訴後續如何格式化結果
    const result= await mysql.query('SELECT id, img_url, url from carousel where status = 1', {
    replacements: {},
    type: mysql.QueryTypes.SELECT
    });
  2. 傳遞模型

const Carousel = require('../../models/Carousel');
const result2 = await mysql.query('SELECT id, img_url, url from carousel where status = 1',{ model: Carousel });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章