【问题标题】:Trouble with Sequelize findOne() and SQL ServerSequelize findOne() 和 SQL Server 的问题
【发布时间】:2016-12-30 12:31:21
【问题描述】:

我是 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 正在尝试从我知道在 Employees 表中不存在的列中 SELECT,例如 [id][createdAt][updatedAt]。我相信这与具有(default) 执行的findOne() 命令有关,但我不确定如何配置。

任何指针将不胜感激!

【问题讨论】:

    标签: sql-server express sequelize.js


    【解决方案1】:

    需要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 n00bs 有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2015-10-26
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多