首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server错误的特征和后缀

Server错误的特征和后缀
EN

Stack Overflow用户
提问于 2018-01-10 22:16:37
回答 2查看 822关注 0票数 0

我遇到了几个sql服务器错误,试图使用started和sequelize开始使用一个简单的rest。我正在使用SQL Server 2012 (速成)版本。

首先,我的代码:

代码语言:javascript
复制
const { db } = require('../database');
const Sequelize = require('sequelize');
const service = require('feathers-sequelize');
const app = require('../app');

const Model = db.define('workorder', {
  id: { type: Sequelize.INTEGER, primaryKey: true },
  created_by: Sequelize.STRING,
  modified_by: Sequelize.STRING,

  status_name: Sequelize.STRING,
  date_completed: Sequelize.DATE,
  category: Sequelize.STRING,
  location: Sequelize.STRING,
  details: Sequelize.TEXT,
  crew_name: Sequelize.STRING,
  assigned_to: Sequelize.STRING,
}, {
  schema: 'dbo',
  freezeTableName: true,
  createdAt: 'date_created',
  updatedAt: 'date_modified',
});

app.use('/api/workorders', service({
  Model,
  id: 'id',
  paginate: {
    default: 10,
    max: 100,
  },
}));

当我到达api端点/api/workorders时,它出错了:

SequelizeDatabaseError:下一个选项在FETCH语句中的无效用法。

我看到生成的sql:

代码语言:javascript
复制
 Executing (default): SELECT [id], [created_by], [modified_by], [status_name], [date_completed], [category], [location], [details], [crew_name], [assigned_to], [date_created], [date_modified] FROM [dbo].[workorder] AS [workorder] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

似乎sql server需要一些ORDER子句。所以我尝试向端点/api/workorders?$sort=id发送一个参数。

这也是错误:

SequelizeDatabaseError:无效列名“1”。

生成的SQL如下所示:

代码语言:javascript
复制
Executing (default): SELECT [id], [created_by], [modified_by], [status_name], [date_completed], [category], [location], [details], [crew_name], [assigned_to], [date_created], [date_modified] FROM [dbo].[workorder] AS [workorder] ORDER BY [workorder].[0] DESC, [workorder].[1] DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

这个错误更明显,没有列1或0。

以前有人遇到过这些问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-11 06:04:38

这似乎是与本期中提到的MSSQL的旧版本的后缀不兼容。一个特定于羽毛的解决方案提到在本期评论中来添加$sort$limit,如下所示:

代码语言:javascript
复制
query: {
        $limit: 5,
        $sort: {createdAt: -1}
      }
票数 2
EN

Stack Overflow用户

发布于 2018-01-16 16:45:06

正如Daff I所引用的那样,对于Server 2014,Sequelize仍然没有生成与MSSQL 2014兼容的代码。因此,考虑到建议这里指定小于11.0.0的MSSQL版本,我在某种程度上任意指定了10.0.0的数据库版本。

这对我来说是有效的-- Sequelize现在生成了2014年(以及更早的)兼容的tsql代码。在生成'sequelize.js‘文件中的Sequelize实例时,我对options对象中的sequelize.js属性进行了更改,该实例是由property生成的,如下所示:

代码语言:javascript
复制
const sequelize = new Sequelize(database, username, password, {
  dialect: 'mssql',
  host: hostname,
  logging: console.log,
  define: {
    freezeTableName: true
  },
  // from https://github.com/sequelize/sequelize/issues/4404
  // use earlier SQL Server version to assure tsql compatible code generation
  databaseVersion: '10.0.0' 
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48197004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档