Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 现有模型上的负载包括_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript 现有模型上的负载包括

Javascript 现有模型上的负载包括,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我正在尝试在sequelize中的现有模型上加载includes。在express中,我们预先检查模型,看看它们是否存在于中间件中 因此,一旦我们在实际的“控制器”中,我们希望在传入的现有模型上运行一些include req.models.item.incude([ {model: Post, as: 'posts'} ]) 有没有办法做到这一点 编辑: 我知道我们可以这样做 return req.models.item.getThing() .then(function (t

我正在尝试在sequelize中的现有模型上加载includes。在express中,我们预先检查模型,看看它们是否存在于中间件中

因此,一旦我们在实际的“控制器”中,我们希望在传入的现有模型上运行一些include

req.models.item.incude([
    {model: Post, as: 'posts'}
])
有没有办法做到这一点

编辑:

我知道我们可以这样做

return req.models.item.getThing()
    .then(function (thing) {
        req.models.item.thing = thing;

        return req.models.item;
    });
但是:

  • 我的includes扩展是一个动态属性,通过url参数来实现,因此它们无法提前知道
  • 如果我返回上述内容,您将不会在响应中看到“东西”。我需要它作为原始实例的一部分进行良好构建

  • 类似于带有('thing','other.thing')的
    符号就好了。或者在sequelize
    的情况下,使用({include:…})
    包括([{model:…}])

    如果变量
    req.models.item
    已经是一个,但没有其他相关实例(“包括”),则可以使用类似以下代码的方式将其包括在内:

    Item.findAll({ 
      where: req.models.item.where(),
      include: [{
        model: SomeAssociateModel,
      }]
    })
    .then(function(itemWithAssoc) {
      // itemWithAssoc is an Instance for the same DB record as item, but with its associations
    });
    
    有关一些文档,请参阅。请参阅,以获取此脚本演示


    更新:给定实例,如何获取关联模型?

    为此,只需使用自动生成的“getAssociation”getter函数,例如:

    function find_associations_of_instance(instance) {
      return instance.getDetails();
    }
    

    我已经更新了脚本,将此作为示例。有关这些函数的更多信息,请参阅。

    但这不会重复对所选项目的查询。关键是只拉取包含项,因为我已经有了该项。@Rob-好的,我已经编辑了我的原始答案,以包含如何执行此操作。嗯,只是抛出了一些错误,说明这些方法在实例和模型上都不存在。使用sequelize 3.13.0.Hmmm。脚本更新为使用3.13.0,在我的计算机上运行时没有错误。错误是什么?堆栈跟踪是什么?