如何在节点中有多个关联/条件/包含.js在 findAll 上续集
how to have multiple associations/conditions/includes in node.js sequelize on findAll
我有一个mysql DB,我正在通过node.js中的续集访问它。
我想连接 3 张桌子。
关系是:
Person n : n Work (associated through PersonWork having foreign key for Person and Work)
Work n : n Book (associated through BookWork having foreign key for Book and Work)
我想加入"人脉"、"工作"和"图书"。
现在我在节点中嵌套 2 个查询,但结果似乎相当慢。
SQLPersonWork.findAll({ where: {}, include: [SQLWork, SQLPerson] }).success(function (sqlresult) {
sqlresult.forEach(function ProcessPersonWorkResult(oneresult) {
var work = oneresult.work;
var name = oneresult.person.name;
(function (work, name) {
SQLBookWork.findAll({ where: { "work_id": work.id }, include: [SQLBook] }).success(function (sqlbookresult) {
sqlbookresult.forEach(function ProcessBookResult(onebook) {
// process result I want to get
});
});
})(work, name);
});
您可以看到双嵌套的 findAll()。
有没有办法将其合并为 1 个查询?
我不知道
这是否是唯一的答案。
根据 NodeJS 续集和 FindAll 与包含和约束和节点.js续集关联,包含条件这似乎是不可能的,如果不去直接 sql——尽管这种似乎违背了续集的目的。
var qstring = "SELECT * FROM mydb.person p '
join mydb.personrole pr on p.id = pr.person_id '
join mydb.work w on w.id = pr.work_id '
join mydb.bookwork bw on bw.work_id = w.id '
join mydb.book b on b.id = bw.book_id;";
sequelize.query(qstring).success(function (result) {
console.log(result.count);
result.forEach(function ProcessRatingResult(oneresult) {
console.log(oneresult);
});
});
这也运行得更快。
相关文章:
- 如果条件推送包含/匹配字符串的值
- 有条件的包含js/css文件的IE与流星
- 查询中包含NOT Equal的水线ORM(sails.js)条件
- 函数的javascript - 如何在for循环中包含另一个条件
- 有条件地在返回语句中包含 json 字段
- jQuery 条件,用于检查类,如果它包含该类,则执行
- Window.open 在包含确认对话框的 if 条件中不起作用
- 如果 e.keyCode 是“输入”按钮,并且元素包含其他文本,则验证条件
- JS代码以检查日期,如果包含该日期的元素满足条件,则突出显示该日期
- 如何根据条件显示包含唯一项目符号的无序列表
- 如何在节点中有多个关联/条件/包含.js在 findAll 上续集
- 使用 Rails 3.2,是否应避免在视图中包含条件 JavaScript
- 我如何有条件地在 React 中的某些 HTML 中间包含一个标签
- 我的 JavaScript 需要什么条件?它是一个弹出一个对话框的脚本,其中包含字段的表单验证备注留空
- 如何检查数组包含 javascript 中的元素的条件
- 如何有条件地包含外部 JavaScript 文件
- ipad的css文件上的条件包含
- CSS的条件包含,但不作为最后一个(或第一个)CSS
- 当if条件包含或(||)两个变量时,jQuery if/else语句
- Javascript名称空间和条件包含