sequelize.js 中的动态默认范围

Mik*_*liy 6 node.js sequelize.js

我正在使用 sequelize.js 构建一种多租户。从技术上讲,我需要按预定义的列和当前上下文的动态值过滤所有查询。一般想法是用来defaultScope过滤掉其他上下文,例如:

var context = () => { return "some current context id"; }

connection.define('kid', {
  firstName: Sequelize.STRING,
  photoUrl: Sequelize.STRING,
  context: {
    type: Sequelize.STRING,
    defaultValue: context // this part works, it accepts function
  }
}, {
  defaultScope: {
    where: {
      context: context // this does not work, it does not accept function and values is defined only once
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,因为它defaultScope是在应用程序启动时定义的。

这样做的正确方法是什么?

Fes*_*sto 3

我不确定这会有帮助,但您可以随时覆盖模型默认范围。

let defaultScope = {
  where: {
    context: ""
  }
};
defaultScope.where.context = context();
model.addScope('defaultScope',defaultScope,{override: true});
Run Code Online (Sandbox Code Playgroud)