2016-04-01 99 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

相关问题