- 설치

npm install --save sequelize

npm install --save sqlite3



mapbox /node-sqlite3

https://github.com/mapbox/node-sqlite3 - 4.6k

    - v5.0.0 , 2020/07

 

    - 매뉴얼

https://github.com/mapbox/node-sqlite3/wiki/API



//----------------

sqlite3 테스트



function db_test() {

    var sqlite3 = require('sqlite3').verbose();

    var db = new sqlite3.Database(':memory:');//파일인 경우 파일 이름 예) './test1.db'



    db.serialize(function () {

        db.run("CREATE TABLE IF NOT EXISTS info (title TEXT)");//테이블 생성

 

        // Create , 레코드 추가

        var stmt = db.prepare("INSERT INTO info( title) VALUES (?)");

        for (var i = 0; i < 2; i++) {

            stmt.run("Ipsum " + i);

        }

        stmt.finalize();

 

        // Read 조회

        db.each("SELECT rowid AS id, title FROM info", function (err, row) {

            console.log(row.id + ": " + row.title);

        });

    });

 

    db.close();

}



//---------------------------------------------

< Sequelize >

 

    - DB 접속 정보 설정

config/config.json 수정

   

    "development": {

        "database""main",

        "username""",

        "password""",

        "dialect""sqlite",

        "storage""./test1.db",

        "dialectOptions": {            

        }

    },



//-------------------------------

    - 로더 수정

        models/index.js 파일 수정

 

const Sequelize = require('sequelize');

const env = process.env.NODE_ENV || 'development';

const config = require(__dirname + '/../config/config.json')[env];

 

const sequelize = new Sequelize(config.database, config.username, config.password, config);

 

    //모델 로딩

let models = ['test1', 'db2'];

models.map(val => {

    require(`./${val}`).init(sequelize);

});



// Raw 쿼리

sequelize.raw = async function (str, log = false) {

    let option = {};

    if ('SELECT' === str.slice(0, 6).toUpperCase()) {

        option = {

            type: QueryTypes.SELECT,

        }

    }

    if (log === false) {

        option.logging = false;

    }

    let ret = await this.query(str, option);

    return ret;

}

 

//export

module.exports = sequelize;




//------------------------------------------

    - DB 모델 수정

        - models/test.js 파일 수정

const { Sequelize, DataTypes, Model } = require('sequelize');

 

module.exports = class Test1 extends Sequelize.Model {

    static init(sequelize) {

        return super.init({

            num: {

                type: DataTypes.INTEGER,

            },

            str: {

                type: DataTypes.STRING,

            },

        }, {

            sequelize,

            timestamps: false,

            modelName: 'test1',

            tableName: 'test1',

            paranoid: false,

        });

    }

    static async create1(num, str) {

        try {

            const test = await this.create({

                num, str

            });

            //console.log('ret', test);

        } catch (e) {

            //console.log('ERROR!!');

        }

    }

}




//--------------------------------------------

main 파일 수정

    - app.js 파일 수정

 

//모델 로딩

const db = require('./models');

 

//쿼리 실행

db.models.test1.create1(1, 'qwe');

 

db.raw(`select * from test1`, true)

    .then(ret => {

        console.log(ret);

    });



//--------------------------

// 참고

codens.info/2014

 

 

반응형
Posted by codens