我是 Sequelize 的新手,并试图运行一个基本查询以在我的数据库中找到模型的第一个实例。我的模型 user.js
:
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;
和文件
api.js
,在我的 Express.js
应用程序中,代码被调用: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'
});
});
我使用了值“Matt”,因为我知道它在表
Employees
中。但是,在执行时,我收到错误消息,似乎表明 Sequelize 正在尝试从我知道 SELECT
表中不存在的列中提取 Employees
,例如 [id]
、 [createdAt]
、 [updatedAt]
。我相信这与具有 findOne()
执行的 (default)
命令有关,但我不确定如何配置。任何指针将不胜感激!
最佳答案
需要 attributes:['NameOfColumn1','NameOfColumn2', etc.]
例如,就我而言:
User.find({
attributes: ['Name'],
where: {
Name: 'matt'
}
})
将只考虑查询中的列
Name
。呜。此外,除非 timestamps: false
存在于您的模型定义中,否则您的模型将包含这些值,并且在查询您的表是否未相应同步时可能会引发错误。例如,在我的 User.js
模型中:var User = sequelize.define('Users', {
Username: Sequelize.STRING,
Password: Sequelize.STRING
}, {
timestamps: false
});
很抱歉在询问之前没有找到这个:-/希望这些信息对像我这样的其他 Sequelize n00b 有帮助。
关于sql-server - Sequelize findOne() 和 SQL Server 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39105230/