Node Feathers Sequelize API неверное имя столбца - PullRequest
0 голосов
/ 26 июня 2018

Я настраиваю API для базы данных SQL Server 2008, используя Node, Feathers и Sequelize.Я успешно создал модели и сервисы, используя перо-sequelize-auto, и большинство маршрутов работают.Приложение работает, но с сообщением об ошибке:

Unhandled Rejection at: Promise  {"_bitField":18087936,"_fulfillmentHandler0":{}}

Я получаю сообщение об ошибке для одного из маршрутов (/ проекта), связанных с одним из его внешних ключей.Вывод почтальона для / project:

{
    "name": "GeneralError",
    "message": "Invalid column name 'OrganisationID'.",
    "code": 500,
    "className": "general-error",
    "data": {},
    "errors": {}
} 

Все отлично работает в самой базе данных, и я могу без проблем выполнять запросы к связанным таблицам.

Соответствующие части Project.model.js:

Определения полей

LeadAgency: {
        type: DataTypes.INTEGER,
        allowNull: true,
        references: {
          model: 'Organisation',
          key: 'OrganisationID'
        }

Отношения:

Project.associate = function(models) {
    // Define associations here
    // See http://docs.sequelizejs.com/en/latest/docs/associations/
    Project.belongsTo(models.Team, { foreignKey: 'TeamID' });
    Project.belongsTo(models.Subteam, { foreignKey: 'SubTeamID' });
    Project.belongsTo(models.Staff, { foreignKey: 'StaffID' });
    Project.belongsTo(models.Organisation, { foreignKey: 'OrganisationID' });
    Project.belongsTo(models.Project, { foreignKey: 'ProjectID' });
  };

А это код Organisation.model.js:

/* jshint indent: 2 */

// See http://docs.sequelizejs.com/en/latest/docs/models-definition/
// for more of what you can do here.

const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;

module.exports = function(app) {
  const sequelizeClient = app.get('sequelizeClient');
  const Organisation = sequelizeClient.define(
    'Organisation',
    {
      OrganisationID: {
        type: DataTypes.INTEGER,
        allowNull: false,
        primaryKey: true,
        autoIncrement: true
      },
      Name: {
        type: DataTypes.STRING,
        allowNull: false
      },
      Type: {
        type: DataTypes.STRING,
        allowNull: true
      },
      AddressID: {
        type: DataTypes.INTEGER,
        allowNull: true,
        references: {
          model: 'Address',
          key: 'AddressID'
        }
      }
    },
    {
      tableName: 'Organisation',
      timestamps: false
    },
    {
      hooks: {
        beforeCount(options) {
          options.raw = true;
        }
      }
    }
  );

  // eslint-disable-next-line no-unused-vars
  Organisation.associate = function(models) {
    // Define associations here
    // See http://docs.sequelizejs.com/en/latest/docs/associations/
    Organisation.belongsTo(models.Address, { foreignKey: 'AddressID' });
  };

  return Organisation;
};

Нуб здесь, так что может быть пропущено что-то очевидное.Помощь оценена!

1 Ответ

0 голосов
/ 31 августа 2018

Я получил эту ошибку из-за неправильных отображений в model.associate.В вашей модели проекта вы также определили Project как ассоциированного.Это может быть причиной.

...