2016-04-01 146 views
1

我正在使用Sequelize,並試圖在我的用戶列中插入一行。但是,我不斷收到以下錯誤:未處理的拒絕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構造函數中,您還可以打開日誌記錄(日誌記錄:true)。日誌應該輸出正在構建的確切的SQL。

+0

這對我有效!真正的關鍵是將模式放在「定義」中。我仍然有點不確定爲什麼我以前的設置不起作用,但我很高興有一些操作。至少在這種情況下。 – OrwellHindenberg

相關問題