2016-04-01 8 views
1

Ich arbeite mit Sequelize und ich versuche, eine Zeile in meine Benutzerspalte einzufügen. Ich erhalte jedoch weiterhin den folgenden Fehler:Unbehandelte Ablehnung SequelizeDatabaseError

Unhandled rejection SequelizeDatabaseError: Invalid object name 'User'. 

Ich verbinde mich mit einem MSSQL-Server. Ich weiß, dass ich die grundlegende Verbindung richtig habe, weil ich Sequelize's einfache Abfragen per sequelize.query ohne Problem ausführen kann. Mein Verdacht ist, dass ich das Schema oder die Datenbank nicht korrekt spezifiziere.

Mein Modell Definition:

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 
 
});

Mein Versuch, das Modell zu verwenden, um eine Zeile in meine vorbestehenden Datenbank zu erstellen/einfügen.

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 });

Wenn ich Sequelize der Ebene SQL verwendet, dies zu erreichen ich das Schema aka umfassen Mußtest "in Core.User einfügen". Benenne ich das Schema nicht korrekt? Ich habe versucht, es zu meiner ursprünglichen Verbindungsdefinition hinzuzufügen, indem ich "schema: 'Core'," vor dialectOptions hinzufüge.

Antwort

2

können Sie Schema in Ihrem sequelize Konstruktor angeben:

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

jedoch nach ihrer code, was Sie tun richtig erscheint. Im Sequelize-Konstruktor können Sie auch die Anmeldung aktivieren (logging: true). Die Protokollierung sollte genau die sql ausgeben, die gerade erstellt wird.

+0

Das funktionierte für mich! Der eigentliche Schlüssel war, das Schema in "define" zu setzen. Ich bin immer noch ein wenig unsicher, warum mein vorheriges Setup nicht funktionierte, aber ich bin froh, dass etwas funktioniert hat. Zumindest in diesem einen Fall. – OrwellHindenberg

Verwandte Themen