node.js sequelize を極める

2014年5月8日更新 view: 305 view
photoBy: http://2.bp.blogspot.com/_Uy8bIkvYICU/TD4THvxTpkI…

sequelizeとは?

node.jsでmysqlを簡単に扱うためのライブラリ。

インストール

npm install mysql
npm install sequelize
npm install dateformat

基本コード

createdAt
updatedAt
の2つのDATETIME型のフィールドが無いとエラーになる。

createdAtとかのフィールドはなぜか時間が9時間ずれる。
linuxとかの設定みてもおかしくないので、sequelize自体のバグなのか。

  • sync はDBを削除する恐れがあるので、phpmyqdminなどで別途DBを作成しておく
  • 日付は modified フィールドに 現在の日時を挿入。
  • dataのものが登録される、アップデートされる。
//DB接続設定
var sequelize = require('sequelize');
var connection = new sequelize('yourdbname', 'yourusername', 'yourpass', {host: 'yourdbhost.com'});

//時刻取得ライブラリ
var dateformat = require("dateformat");


//使いたいフィールドだけ入れておけばOK
var tmpDB = connection.define('yourdbtablename', {
    id: sequelize.INTEGER,
    url: sequelize.STRING,
    title: sequelize.STRING,
    modified: sequelize.STRING//mysql側は、datetime型でOK。ただし、ここは文字列型にしておかないと 9時間ずれる。
});


now = dateformat(new Date(), "yyyy-mm-dd HH:MM:ss");

data = {
    id:15,
    url:'http://www.raumen.co.jp',
    title:'google',
    modified:now
};

これでDBを操作する準備は完了!

クエリexample

id 11 を検索

tmpDB.find(11).success(function (result) {
    console.log(result);
});

findall
id が 11 で urlが空でないものを検索

スポンサードリンク
tmpDB.findAll({ where: ['id=? and url !=?', 11, ''] ,limit: 10, order: 'id desc'})
    .error(function (err) {
        //エラー時の処理
        //console.log(err);
    })
    .success(function (result) {

        //成功時の処理
        for (var i = 0; i < result.length; i++) {
            // idを表示する
            console.log(result[i].id);
        }

    });

直接SQLを発行

connection.query('SELECT * FROM `qjiin_tmps` WHERE `url` != \'\' AND `id` = 11 ORDER BY id desc LIMIT 3').success(function (result) {
    console.log(result[1].url);
});

新規挿入

成功時に、console.log(result.null); で getlastinsertIDを取得できる。

tmpDB.create(data)
.error(function(err) {
    //エラー時の処理
    //console.log(err);
})
.success(function(result) {
    //成功時の処理
    //console.log(result);////console.log(result.null);//getlastinserid
});

update

tmpDB.update(data,//更新内容
{ id: 11}//対象
)
.error(function (err) {
    //エラー時の処理
})
.success(function (result) {
        console.log('更新完了');
});

delete文は、直接sqlを発行した方が安全です。

coffeesciprt

複数レコードを一気に新規追加

配列

data = [
     {
        url: "http://www.yahoo.co.jp"
        title:'yahoo'
     }
     {
        url: "http://www.google.co.jp"
        title:'google'
     }
     {
        url: "htp://www.msn.co.jp"
        title:'msn'
     }
    ]

コード

this.tmpDB.bulkCreate(data).success ->
     callback "done"
スポンサードリンク

関連記事

関連カテゴリ