2016-08-23 3 views
0

Ich bin neu in Sequelize und versuchte, eine grundlegende Abfrage auszuführen, um die erste Instanz des Modells in meiner Datenbank zu finden. Mein Modell user.js:Problem mit Sequelize findOne() und SQL Server

var Sequelize = require('sequelize'); 

var sequelize = new Sequelize('Northwind', 'username', 'password', { 
    host: 'localhost', 
    port: 1433, 
    dialect: 'mssql' 
}); 

var User = sequelize.define('Employees', { 
    Name: Sequelize.STRING, 
    createdAt: false, 
    updatedAt: false 
}); 

module.exports = User; 

Und die die Datei, api.js, in meiner Express.js Anwendung, wo der Code aufgerufen wird:

router.route('/posts') 
    .get(function (req, res) { 
     var user; 

     User.find({ 
      where: { 
       Name: 'matt' 
      }    
     }).then(function (user) { 
     console.log('found'); 
    }, function(err){ 
     console.log(err); 
    }); 
    res.send({ 
     message: 'Test string' 
    }); 
}); 

verwendete ich den Wert "Matt" denn ich weiß, dass es in der Tabelle Employees. Bei der Ausführung erhalte ich jedoch Fehler, die darauf hindeuten, dass Sequelize versucht, SELECT aus Spalten, die ich weiß, nicht in der Employees Tabelle wie [id], [createdAt], [updatedAt]. Ich glaube, es hat mit der findOne() Befehl mit einer (default) Ausführung zu tun, aber ich bin mir nicht sicher, wie zu konfigurieren.

Alle Zeiger würden sehr geschätzt werden!

Antwort

0

Needs attributes:['NameOfColumn1','NameOfColumn2', etc.]

Zum Beispiel in meinem Fall:

User.find({ 
     attributes: ['Name'], 
     where: { 
     Name: 'matt' 
    }    
}) 

nur die Spalte Name in der Abfrage in Betracht ziehen. Woot. Wenn in Ihrer Modelldefinition timestamps: false nicht vorhanden ist, enthält Ihr Modell diese Werte und kann bei der Abfrage Fehler verursachen, wenn Ihre Tabelle nicht entsprechend synchronisiert wird. Zum Beispiel in meinem User.js Modell:

var User = sequelize.define('Users', { 
    Username: Sequelize.STRING, 
    Password: Sequelize.STRING 
}, { 
    timestamps: false 
}); 

Es tut uns daran, diese nicht, bevor er fragte: -/Hoffnung diese Informationen erweist sich als zu anderen Sequelize n00bs wie mich hilfreich.