sql-server - Sequelize findOne() 和 SQL Server 的问题

标签 sql-server express sequelize.js

我是 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/

相关文章:

sql - 在哪里可以查看 SQL Server 启动/停止日志?

Node、Express、Oauth2 和 Passport 的 Angularjs CORS 问题

javascript - 使用Express JS部署Elasticsearch

node.js - 如何测试使用nodemailer发送电子邮件的Sequelize 'afterCreate'钩子(Hook)?

java - 如何以格式化的方式存储和检索文本数据?

使用带有动态数据的 "IN"关键字的 SQL 语法问题

.net - 信号量超时时间

node.js - expressjs发帖时出现403 forbidden错误

javascript - 如何在 feathersjs 项目中使用 sequelizejs 创建外键

mysql - 联结表中的复合主键 - Sequelize