私はいくつかのSQLサーバーエラーに遭遇しています.feathers jsとsequelizeを使用して単純なrest APIを使い始めようとしています. SQL Server 2012 (express) バージョンを使用しています。
最初に私のコード:
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 ステートメントでのオプション NEXT の使用法が無効です。
SQL が生成されたことがわかります。
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 BY 句が必要なようです。そこで、エンドポイントにパラメーターを送信してみました/api/workorders?$sort=id
これもエラーになります:
SequelizeDatabaseError: 列名 '1' が無効です。
生成された SQL は次のようになります。
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 はありません。
以前にこれらの問題に遭遇した人はいますか?