У меня есть модель User
, которая связана с моделью Product
через модель Subscription
следующим образом:
// User model
User.belongsToMany(models.Product, {
through: models.Subscription,
as: 'products',
foreignKey: 'userId',
otherKey: 'productId'
})
// Product model
Product.belongsToMany(models.User, {
through: models.Subscription,
as: 'users',
foreignKey: 'productId',
otherKey: 'userId'
})
// Subscription model
const Subscription = sequelize.define(
'Subscription',
{
// attributes
},
{
paranoid: true
}
)
В моем контроллере есть следующий код:
if (!(await user.hasProduct(product, { paranoid: false }))) {
// Do Something only if the user does NOT have the product
}
Однако этот код, похоже, игнорирует параметр { paranoid: false }
и генерирует следующее SQL:
SELECT "Product"."id" FROM "Products" AS "Product" INNER JOIN "Subscriptions" AS "Subscription" ON "Product"."id" = "Subscription"."productId" AND ("Subscription"."deletedAt" IS NULL AND "Subscripti
on"."userId" = 5) WHERE ((("Product"."id" = 9)));
Мне нужно, чтобы этот запрос игнорировал часть "Subscription"."deletedAt" IS NULL
.
Итак, у меня вопрос, как мне использовать метод .hasProduct
и заставить его возвращаться для мягко удаленных элементов в модели параноидального соединения? Или мне нужно использовать .findOne()
, чтобы получить экземпляр Subscription
отдельно?