Sequelize включить ассоциацию не будет работать (graphql) - PullRequest
0 голосов
/ 10 октября 2019

У меня есть две модели User и FriendRequest. User может иметь много FriendRequests, а FriendRequest принадлежит User. Когда я пытаюсь User.findOne и включить FriendRequest, я получаю

{
  ...
  FriendRequest: null
}

models / User.js

  const User = sequelize.define(
    "User",
    {
      ...
    },
    {
      tableName: "users"
    }
  );
  User.associate = function(models) {
    // associations can be defined here
    User.hasMany(models.FriendRequest);
  };

models / FriendRequest.js

"use strict";
module.exports = (sequelize, DataTypes) => {
  const FriendRequest = sequelize.define(
    "FriendRequest",
    {
      senderId: DataTypes.INTEGER,
      receiverId: DataTypes.INTEGER,
      status: DataTypes.INTEGER,
      UserId: DataTypes.INTEGER
    },
    {
      tableName: "friend_requests"
    }
  );
  FriendRequest.associate = function(models) {
    FriendRequest.belongsTo(models.User);
    // associations can be defined here
  };
  return FriendRequest;
};

graphql-modules / user.js

  type User {
    ...
    FriendRequest: [FriendRequest]
  }

graphql-modules / friend_request.js

  type FriendRequest {
    id: Int!
    senderId: Int!
    receiverId: Int!
    status: Int!
    UserId: Int!
  }

services / users_service.js

let searchUser = async (args) => {
  try {
    let user = await User.findOne({
        where: args,
        include: [
          {
            model: FriendRequest
          }
        ]
      });
      let request = await FriendRequest.findAll({ where: { UserId: args.id } });
      console.log(request);
    return user;
  } catch (err) {
    throw new Error(err);
  }
};

Выше, ядобавил переменную запроса, чтобы посмотреть, могу ли я запросить FriendRequest, и да, я получил правильные результаты.

Я также попытался сделать

include: [
          {
            model: FriendRequest,
            where: {UserId: args.id}
          }
        ]

Но он возвращает user = null;

Мне нужна переменная пользователя для возврата массива FriendRequests. В базе данных есть строки: Id senderId receiveId status UserId 7 5 2 0 5

...