Ошибка Sequelize: «Связь с псевдонимом« отправитель »не существует в GlobalMessage» - PullRequest
0 голосов
/ 03 мая 2020

Я создаю приложение Node / Express с Sequelize. Я создал несколько моделей и провел некоторые миграции баз данных с sequelize-cli с минимальными трудностями и решил добавить некоторые ассоциации между моими сущностями, добавив их в файлы моделей и вызвав sequelize.sync(). Казалось, что все go гладко, пока я не сделал запрос для проверки ассоциаций, и я получил эту ошибку: Association with alias "sender" does not exist on GlobalMessage. Ниже приведен соответствующий код:

models / globalmessage. js:

'use strict';
module.exports = (sequelize, DataTypes) => {
  const GlobalMessage = sequelize.define('GlobalMessage', {
    body: DataTypes.TEXT,
    timestamp: DataTypes.DATE,
    SenderId: {
        type: DataTypes.INTEGER,
        references: {
            model: "Users",
            key: "id"
          }
    }
  }, {});

  GlobalMessage.associate = function(models) {
    // associations can be defined here
    GlobalMessage.belongsTo(models.User, {foreignKey: 'SenderId', as: 'sender'});
  };
  return GlobalMessage;
};

models / user. js:

'use strict';
module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    email: DataTypes.STRING,
    password: DataTypes.STRING,
    username: DataTypes.STRING
  }, {});
  User.associate = function(models) {
    // associations can be defined here
    User.hasMany(models.GlobalMessage, {
      as: 'globalMessages'
    })
  };
  return User;
};

routs / api / user. js:

const Sequelize = require("sequelize");
const express = require("express");
const bcrypt = require('bcrypt');
const saltRounds = 10;
const router = express.Router();
const db = require("../../db/index");
const UserModel = require("../../models/user");
const User = UserModel(db, Sequelize);
const GlobalMessageModel = require("../../models/globalmessage")
const GlobalMessage = GlobalMessageModel(db, Sequelize);

router.post("/findOne", function (request, response, next) {
  GlobalMessage.findOne({
      where: {body: 'Body of message 1'}, include: 'senders'
  })
  .then((foundUser) => {
      response.json(foundUser)
  })
  .catch((err) => {
      console.log("Error while finding user: ", err)
  })
})

module.exports = router;

Я получаю сообщение об ошибке при отправке запроса в localhost / api / user / findOne. Я искал повсюду и нашел немного документации об этой конкретной ошибке c, и любой совет, который я нашел, не оказался для меня плодотворным. Любая помощь будет оценена!

...