Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize:使用函数添加默认范围_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript Sequelize:使用函数添加默认范围

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

我正在Sequelize ORM下添加带有函数的默认作用域。我遵循了这里的教程,而对于Scope接受参数,我们需要像这样传递对象

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。而对于函数作用域,一个正常命名的将起作用。谢谢