Javascript 现有模型上的负载包括
我正在尝试在sequelize中的现有模型上加载includes。在express中,我们预先检查模型,看看它们是否存在于中间件中 因此,一旦我们在实际的“控制器”中,我们希望在传入的现有模型上运行一些includeJavascript 现有模型上的负载包括,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
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;
});
但是:
类似于带有('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,在我的计算机上运行时没有错误。错误是什么?堆栈跟踪是什么?