Как я могу использовать текущее значение запроса в sequelize? - PullRequest
0 голосов
/ 16 марта 2020

Я новичок в sequelize, и мне нужно включить несколько таблиц, я пытаюсь, возлюбленный:

const result = await product.findAll({
        where: {
            isDeleted: false,
            sellerId
        },
        attributes: ["name", "type", "isActive", "subCategoryIds"],
        include: [
            {
                model: category,
                as: 'categories',
                attributes: ["name"],
            },
            {
                model: category,
                as: 'subCategories',
                attributes: ["name"],
                where: {
                    id: _.split(sequelize.col("subCategoryIds"), ",")
                },
            },
        ],
        offset: (page - 1) * limit,
        limit
    });

Но возвращается ошибка:

SequelizeDatabaseError: оператор не существует: изменяющийся символ = целое число

Модель продукта:

const product = sequelize.define("products",
{
    id: {
      type: DataTypes.BIGINT.UNSIGNED,
      field: "id",
      primaryKey: true,
      autoIncrement: true,
      index: true,
    },
    name: {
      type: DataTypes.STRING,
      field: "name",
      allowNull: false,
    },
    type: {
      type: DataTypes.STRING,
      field: "type",
      allowNull: false,
    },
    categoryId: {
      type: DataTypes.NUMBER,
      field: "categoryId",
      references: {
        key: "id",
        model: category,
      },
      allowNull: false,
    },
    sellerId: {
      type: DataTypes.NUMBER,
      field: "sellerId",
      references: {
        key: "id",
        model: user,
      },
      allowNull: false,
    },
    subCategoryIds: {
      type: DataTypes.STRING,
      allowNull: false,
      get() {
        const result = _.split(this.getDataValue("subCategoryIds"), ",").map(item => +item);
        return result;
      }
    },
    isDeleted: {
      type: DataTypes.BOOLEAN,
      field: "isDeleted",
      defaultValue: false,
    },
    createdAt: {
      type: DataTypes.DATE,
      field: "createdAt",
      defaultValue: DataTypes.NOW,
    },
    updatedAt: {
      type: DataTypes.DATE,
      field: "updatedAt",
      defaultValue: DataTypes.NOW,
    }
  }, {
  tableName: "products",
  timestamps: false
}
);

product.belongsTo(category, { as: "categories", foreignKey: 'categoryId' });
category.hasMany(product, { as: "products", foreignKey: 'categoryId' });

product.belongsTo(category, { as: "subCategories", foreignKey: 'subCategoryIds' });

Я не понимаю, что происходит, есть какое-либо решение для этой

детали в таблице, например

categoryId => 11 subCategoryIds => 11, 12

если я удаляю

       {
            model: category,
            as: 'subCategories',
            attributes: ["name"],
            where: {
                id: _.split(sequelize.col("subCategoryIds"), ",")
            },
        },

, то это работает нормально, проблема в sequelize.col ( «subCategoryIds») возвращает строку col («subCategoryIds»), а не фактическое значение идентификаторов подкатегорий 11, 12

...