2016-04-01 13 views
1

Sequelizeで作業していて、ユーザー列に1行挿入しようとしています。ただし、次のエラーが発生します。処理されていない拒否SequelizeDatabaseError

Unhandled rejection SequelizeDatabaseError: Invalid object name 'User'. 

私はMSSQLサーバーに接続しています。 sequelize.queryを使用してsequelizeのプレーンなクエリを問題なく実行できるので、基本的な接続権があることがわかります。私の疑問は、スキーマやデータベースを正しく指定していないことです。

マイモデル定義:作成/私の既存のデータベースに行を挿入するためにモデルを使用する

var user = sequelize.define("User", { 
 
    ID: { 
 
\t \t type: Sequelize.INTEGER, 
 
\t \t unique: true, 
 
\t \t autoIncrement: true 
 
\t }, 
 
    \t FirstName: { 
 
\t \t type: Sequelize.STRING 
 
\t }, 
 
\t LastName: { 
 
\t \t type: Sequelize.STRING 
 
\t }, 
 
\t CreateDate: { 
 
\t \t type: Sequelize.DATE 
 
\t }, 
 
\t UpdateDate: { 
 
\t \t type: Sequelize.DATE 
 
\t } 
 
},{ 
 
\t tableName: 'User', 
 
\t timestamps: false, 
 
\t freezeTableName: true 
 
});

私の試み。

User.schema('Core'); 
 

 
User.create({ ID: '1', FirstName: 'Bobert', LastName: 'Jones'}).then(function(user) { 
 
\t \t console.log(user.get({ 
 
\t \t \t plain: true 
 
\t \t })) 
 
\t });

私はこれを達成するためにSequelizeのプレーンなSQLを使用した場合、私は「Core.Userに挿入する」別名スキーマを含める必要がありました。スキーマを正しく指定していませんか?私はdialectOptionsの前に "schema: 'Core'を追加して、初期接続定義に追加しようとしました。

答えて

2

あなたsequelizeコンストラクタでスキーマを指定することができます。

var sequelize = new Sequelize("db", 
    "user", 
    "pass", { 
     host: "localhost", 
     port: "1206", 
     dialect: "mssql", 
     define: { 
      schema: "core" 
     } 
    }); 

はしかし、あなたは何をしているか、そのcodeによれば、正しい表示されます。 sequelizeコンストラクターでは、ログオンを有効にすることもできます(logging:true)。ロギングは、構築されている正確なSQLを出力する必要があります。

+0

これは私のために働いた!実際のキーはスキーマを「定義」の中に入れていました。以前のセットアップがうまくいかなかった理由はまだ分かりませんが、何か操作可能なことをうれしく思います。少なくともこの1つのケースでは。 – OrwellHindenberg

関連する問題