LoginSignup
3
2

More than 5 years have passed since last update.

Sequelizeチートシート

Posted at

DB操作

find

  • 条件に合うオブジェクトを返す
Model.find({
  where: {id: 1}
});

findAll

  • 条件に合うオブジェクトを配列で全て返す
Model.findAll({
  where: {sampleId: 2}
});

create

  • レコードをinsertする
Model.create({
  name: 'はなこ',
  age: 25
});

update

  • レコードをupdateする
Model.update({
  name: 'まるこ',
  age: 22
});

destroy

  • 条件に合うレコードをdeleteする
Model.destroy({
  where: {id: 3}
});

DB操作応用

include

  • 自分に対してbelongsToの関係にあるモデルをリレーションを持った状態でDBから取り出してくれる
ModelA.findAll({
  include: {
    model: ModelB
  }
});

$or

  • where句に複数の条件をORで指定する
Model.findAll({
  where: {
    $or: [
      {sampleId: 1},
      {sampleId: 3},
      {sampleId: 5}
    ]
  }
});
  • 以下のwhere句と同じ

where id=1 or id=3 or id=5

in

  • where句に複数の条件をANDで指定する
var deleteObjectIds = [1, 2];
Model.destroy({
  where: {
    id: {
      in: deleteObjectIds
    }
  }
})
  • 以下のwhere句と同じ

where id=1 and id=2

同期/非同期処理

  • functions配列の処理が全て完了すると、Promise.allの処理に入る
var functions=[];

functions.push(Model.create({
  name: 'はなこ',
  age: 25
}));

functions.push(new Promise(function(resolve, reject) {
  Model.create({
    name: 'たろう',
    age: 25
  }).then(function(){
    // 処理
    resolve();
  }).catch(function(err){
    reject(err);
  });
}));

Promise.all(functions).then(function() {
  // 処理
  resolve();
}).catch(function(err) {
  reject(err);
});
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2