我正在使用Sequelize构建我的电子商店的后端。我已经定义了clients
、products
、orders
等模型。我希望这些模型的任何实例都是"垃圾"的,即就像删除的实例一样,我希望垃圾实例不会出现在调用<Model>.findAll()
、<ModelA>.get<ModelB>s()
甚至<ModelA>.findAll({ include: [{ model: <ModelB> }]
的结果中。但我仍然希望能够查询那些被丢弃的实例(并最终恢复它们)。
我正在考虑的解决方案是向我的模型添加一个.status
属性 (ENUM('active', 'trashed')
),然后将一个beforeFind
钩子添加到我的所有模型以过滤掉未active
的实例,除非查询显式搜索 id 或trashed
项。 不过,我担心传递给我的beforeFind
钩子的查询的潜在复杂性。如何检测查询正在搜索的内容以及如何修改它们以过滤掉垃圾项?这个解决方案可能还有其他缺点,我什至没有考虑过......
在尝试实现之前,我想知道其他人是否尝试过这种模式,他们是如何做到的以及他们面临什么困难。谢谢 :-)
您是否正在寻找paranoid
选项?