Javascript Sequelize:使用函数添加默认范围
我正在Sequelize ORM下添加带有函数的默认作用域。我遵循了这里的教程,而对于Scope接受参数,我们需要像这样传递对象Javascript Sequelize:使用函数添加默认范围,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我正在Sequelize ORM下添加带有函数的默认作用域。我遵循了这里的教程,而对于Scope接受参数,我们需要像这样传递对象 Project.scope('random', { method: ['accessLevel', 19]}).findAll(); 因此,在我的视频模型代码中,我添加了一个名为“defaultScope”的范围 Video.addScope( 'defaultScope', (userId) => { *********** scope des
Project.scope('random', { method: ['accessLevel', 19]}).findAll();
因此,在我的视频模型代码中,我添加了一个名为“defaultScope”的范围
Video.addScope(
'defaultScope',
(userId) => {
*********** scope description here*********
})
这就是我如何使用我的模型:
const videos = await models.video.scope({
method: ['defaultScope', 'I hardcode userId here']
}).findAll();
console.log(videos);`
但我总是收到一个错误(节点:43214)未经处理PromisejectionWarning:SequelizeScopeError:调用的作用域无效null。
如果我使用另一个作用域名称而不是“defaultScope”,我的代码可以工作,并且我成功地取回了对象。然而,由于它是一个广泛的级别范围,我想将其设置为默认值。我只是觉得很困惑,为什么正常的作用域有效,而默认的作用域无效。有相关经验的人能帮我解决这个问题吗?谢谢 我怀疑defaultScope不能有参数。文档中说“默认范围始终应用于”普通的
model.findAll()
。因此,我认为您的用法实际上是两次应用defaultScope:一次是隐式的,没有参数,另一次是显式的,有参数。defaultScope只能应用于model.findAll()
中作用域选项的.isPlainObject。而对于函数作用域,一个正常命名的将起作用。谢谢