2017-08-01 12 views
0

を開始したモデルを再定義する方法ではない、単一のモデルがこのようにして生成されたといわれます。このような Sequelizeは毎回サーバがSequelizeチュートリアルで

const User = sequelize.define('user', { 
    firstName: { 
    type: Sequelize.STRING 
    }, 
    lastName: { 
    type: Sequelize.STRING 
    } 
}); 

され、保存さよりも

(すなわちテーブルを作成する):

User.sync().then(() => { 
    // do whatever 
}); 

しかし、私はこれを1回だけ行うと予想しています。テーブルを1回作成する必要があります。そこで、次にスクリプトを実行して、上記のコードで前に定義したモデル(つまりテーブル)を取得するだけです。

+1

あなたのコードはすでにそれを行います。 Syncはsync呼び出しに '{force:true}'オプションを指定した場合にのみ、毎回テーブルを作成します。あなたのケースでは、テーブルが存在しない場合にのみテーブルを作成します。ただし、初期同期後にスキーマを変更すると、Sequelizeは後でテーブルに自動的に変更を追加しません。 –

+0

さて、ありがとう、私はそれを持っていますが、それは非論理的なIMOの一種です。 – Scarass

+1

ええ、ちょっと。 https://github.com/sequelize/sequelize/blob/v3/lib/dialects/postgres/query-generator.js#L38。あなたが興味があるなら、参考のために。 Postgresの同期は 'CREATE TABLE IF NOT EXISTS'を使って終了します。 –

答えて

0

syncメソッドでは、毎回データベーステーブルの同期を避けるオプションを渡すことができます。このオプションは、アプリケーションがデータベース内のテーブルをチェックしているかどうかを確認し、存在する場合はテーブルを作成しません。

User.sync(
{force: false}).then(() => { 
    // do whatever 
}); 

まだ問題がある場合は教えてください。私は連続して使用していますが、私はこの問題を抱えていません。

+0

私が問題になっているのは、モデルを再定義する必要があるということです。 IMO、モデルは一度だけ作成する必要があります。次にサーバーが始動すると、以前の実行時に作成されたモデルを取得したいだけです。 – Scarass