Node.js 多个 Sequelize 原始 sql 查询子查询

2023-11-25

标题听起来很复杂。我有一个用户表,每个用户可以有多个兴趣。这些兴趣通过查找表链接到用户。在 PHP 中,我查询了用户表,然后对每个用户进行查询以查找兴趣。如何在 Node.js/Sequelize 中执行此操作?我怎样才能做出某种承诺?例如:

sequelize.query("SELECT * FROM users").success(function(users) {
    for (var u in users) {
       sequelize.query("SELECT interests.id, interests.title FROM interests, user_interests WHERE interests.id = user_interests.interest_id AND user_interests.user_id = " + users[u].id).success(function(interests) {
       if (interests.length > 0) {
         users[u].interests = interests;
       }
    });
  }
  return users;
});

从代码底部的 return 语句来看,您似乎还没有完全掌握 Node.js 的异步本质。代码中的return语句将在第一次调用sequelize.query之后直接执行,即查询返回之前。这意味着用户将是未定义的。

如果你想真正“回报”用户和他们的兴趣,我会建议这样的事情:

sequelize.query("SELECT * FROM users").success(function(users) {
    done = _.after(users.length, function () {
        callback(users)
    })

    for (var u in users) {
        sequelize.query("SELECT interests.id, interests.title FROM interests, user_interests WHERE interests.id = user_interests.interest_id AND user_interests.user_id = " + users[u].id).success(function(interests) {
            if (interests.length > 0) {
             users[u].interests = interests;
            }
            done();
        });
    }
});

在上面的代码中_指的是实用程序库。在函数被调用 users.length 次后执行回调函数。回调是一个传递给您的代码的函数,并且应该处理返回结果,例如在网络服务器的上下文中将用户返回到客户端。

另一条评论 - 如果您只进行原始 SQL 查询,Sequelize 可能不是您的最佳选择。您不直接使用 SQL 驱动程序的原因是什么?如果你想使用sequelize,你应该利用它的功能。尝试为用户和兴趣定义一个模型,建立关联并使用一次加载用户和兴趣JOIN / 急切加载

update:使用 Promise 的示例

sequelize.query("SELECT * FROM users").then(function(users) {
  return sequelize.Promise.map(users, function (u) {
    return sequelize.query("SELECT interests.id, interests.title FROM interests, user_interests WHERE interests.id = user_interests.interest_id AND user_interests.user_id = " + users[u].id).then(function(interests) {
      if (interests.length > 0) {
        user.interests = interests;
      }
    });
  });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 多个 Sequelize 原始 sql 查询子查询 的相关文章

  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • 设置缩略图内容类型

    我需要设置Content Type对于缩略图 我已经尝试如下所示 但它不起作用 仍然 它存储为流 天青功能 索引 json var Jimp require jimp module exports context myBlob gt Rea
  • javascript中文本区域限制每行的字符数

    我试图用 javascript 限制文本区域中每行的字符数 我在这里看到了一些例子 但并不完全符合我的要求 我写了一些东西 只有当你每次添加超过限制时才可以 换句话说 我每行有 10 个字符的限制 如果你总是输入至少 10 个字符就可以正常
  • 通过 AJAX 发送 XML

    我在 jQuery 中创建了一个 xml 文档 如下所示 var xmlDocument
  • ExitFullScreen 不起作用 + 无论如何要按键盘单击按钮?

    我的浏览器 Google Chrome 版本 33 0 1750 154 m Script function exitFullscreen var element document documentElement if element mo
  • 类验证器 (Node.js) 在自定义验证中获取另一个属性值

    目前 我有一个非常简单的类验证器文件 其中包含 Nest js 中的 ValidationPipe 如下所示 import IsDateString IsEmail IsOptional IsString Length Max from c
  • 标点符号加载“动画”,javascript?

    我正在寻找一种好方法来显示一些标点符号加载 动画 我想要的是这样的 This will display at second 1 Waiting for your input This will display at second 2 Wai
  • 从 JavaScript 将参数传递给 p:remoteCommand

    我想将值传递给remoteCommand来自 JavaScript 如果这是可能的 我该如何做到这一点以及如何在支持 bean 中接收它们 对的 这是可能的 如何执行此操作取决于 PrimeFaces 版本 你可以在PrimeFaces 用
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • 如何在WebBrowser控件中注入Javascript?

    我试过这个 string newScript textBox1 Text HtmlElement head browserCtrl Document GetElementsByTagName head 0 HtmlElement scrip
  • 在js中检测浏览器的最佳方法

    JavaScript 中有很多浏览器检测方法 据我所知 使用navigator userAgent或检测特征 例如XMLHttpRequest 等等 谁能告诉我哪种方法最好 最有效 如果你真的需要知道什么browser他们正在使用 你主要需
  • 如何使用 jQuery UI Sortable 正确相交?

    这是我对 jQuery UI Sortable 进行动画处理的尝试 https codepen io anon pen YdMOXE https codepen io anon pen YdMOXE var startIndex chang
  • 设置股票数据 Highcharts xAxis 的格式

    我已经浏览了需要为 xAxis 属性设置的 Highcharts 选项来格式化时间标签 但没有运气了解这对于这种情况到底是如何工作的 我在白天 盘中 检索了股票的动态数据 我需要显示这些数据 因为检索的数据每天从 9 30 开始到 17 0
  • 使用节点护照进行两次不同的登录

    我对两个站点 前台站点和后台 有相同的应用程序 两个站点都需要不同的登录条件 因为后台需要将 is admin 值设置为 true 这是我的登录方法 module exports verifyCredentials function use
  • 测量填写部分的时间 - 谷歌表单

    我正在尝试使用谷歌表单进行研究调查问卷 对于某些部分 我想自动测量用户填写所需的时间 谷歌表单中没有这样的选项 我尝试复制表单源 并用 javascript 填充时间 但它不起作用 跨源问题 未能成功托管复制的表单 如何做到 我如何衡量回答
  • 是否可以让 webpacks System.import 使用 ajax (用于进度事件)?

    所以我刚刚更新到 webpack 2 并进行了第一个工作设置 其中 webpack 通过查看 System import 调用自动创建块 相当甜蜜 但是 我使用 ajax 调用加载初始块 以便我可以加载时显示进度 https stackov
  • backbone.js:视图中影响集合中不同模型的按钮

    我刚刚开始使用backbone js 到目前为止 我真的很喜欢它 我有这样的事情 ModelA ModelB ViewA ViewB ModelA 持有 ModelB 的集合 如何使用按钮构建模型 B 的视图 单击该按钮会更改集合中下一个
  • 需要根据用户选择有条件地渲染具有 X 行数的部分

    我有一个反应组件 其中包含一个下拉列表 其中的选项包括none 1 5 and 13 根据用户选择的数字 我需要渲染一个部分 其中包括许多行 每个行都有字段名称和下拉列表 如果用户不选择任何一个 我需要整个附加配置部分消失 新部分中的每个下
  • 如何在 JSP 编辑器中激活 javascript 的语法着色 - Eclipse

    在某些情况下 javascript 确实必须位于 JSP 页面中 而不是位于单独的文件中 有些框架还使用Javascript做一些事情 以便用户将其包含到JSP标签中 这样JS就不会出现在
  • 右列固定的 Div 表

    我最近接手了一个非营利网站作为一个项目 我正在使用一个现有的网站 所以我必须使用很多已经编程的东西 所以我所要做的就是创建设计 I made a diagram of basically what I can t figure out ho

随机推荐

  • C 数组可以在元素之间包含填充吗?

    我听说有传言说 在 C 中 包含在结构内部的数组可能在数组元素之间添加了填充 现在显然 任何一对元素之间的填充量都不能变化 或者使用简单的指针算术不可能计算数组中的下一个元素 该谣言还指出 不包含在结构中的数组保证不包含填充 我至少知道那部
  • python、postgresql 中的数据库测试

    如何对使用 postgresql 的 python DAL 进行单元测试 在 sqlite 中 您可以为每个测试创建内存数据库 但对于 postgresql 则不能这样做 我想要一个可用于设置数据库并在测试完成后清理它的库 我使用 Sqla
  • 何时为 JWT 使用 RS256?

    所以 现在我正在构建一个供第三方使用的 API 并且我正在阅读有关 RS256 和 HS256 的内容 我的理解是 两者之间的区别在于 第一个使用公钥进行验证 使用私钥进行签名 而另一个则仅使用一个密钥 因此 如果您使用 RS256 因为您
  • 给自己发送一封电子邮件,但让我回复另一封电子邮件

    我正在使用我的 Web 应用程序平台 node js 上的模块 nodemailer 向使用我的 Web 应用程序的联系页面的某人发送电子邮件给自己 因为 我要向自己发送一封电子邮件 如果我回复该电子邮件 我将再次向自己发送一封电子邮件 而
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • Django:将变量从 get_context_data() 传递到 post()

    变量定义在里面get context view 因为它需要一个id访问正确的数据库对象 class FooView TemplateView def get context data self id kwargs bar Bar objec
  • Click 事件在 IE/Firefox 中触发,但 Chrome 正在放弃事件分配

    我正在调试我的网络应用程序 但遇到了困难 我仅在 Google Chrome 中遇到一种行为 而我的 javascript 无能使我无法找到解决方案 我有一个 ASP 页面 其中包含
  • 配置 pymongo 使用字符串 _id 而不是 ObjectId

    我在用着pymongo用来自不同系统的旧信息播种数据库 我有很多这样的查询 studentId studentsRemote insert price price 在实际的 python 脚本中 studentId作为字符串打印 但在我使用
  • JSF2 复合组件:#{cc.childCount} 和 是否互斥?

    我只是不明白 如果我希望我的复合组件插入子组件 我use
  • 使用 DateJS 仅解析时间字符串

    我正在使用优秀的 但很大 DateJS用于处理我的网络应用程序中的日期和时间的库 我刚刚遇到一些我不知道如何处理的事情 我希望我的用户能够仅输入时间字符串 而不输入日期 但他们应该能够以他们喜欢的任何方式输入它 例如 5 00 pm 17
  • PostgreSQL 相当于 TOP n with TIES: LIMIT “with ties”?

    我正在 SQL Server 中寻找类似的东西 SELECT TOP n WITH TIES FROM tablename 我知道关于LIMIT在 PostgreSQL 中 但是是否存在与上述等效的内容 我只是很好奇 因为它每次都会为我节省
  • CORS:AngularJS + Resteasy 3 + Wildfly

    我正在使用 AngularJS 和 Resteasy 开发一个应用程序 正如预期的那样 我面临着众所周知的问题 XMLHttpRequest cannot load http localhost 8080 No Access Control
  • 如何迭代对象列表?

    我有一个 User 类 其中有一个字符串用户名 我有一个用户列表 我试图使用它在表格中显示
  • 如何知道 RecyclerView 何时完成放置项目?

    我有一个RecyclerView那是在一个里面CardView The CardView高度为 500dp 但我想缩短这个高度 如果RecyclerView较小 所以我想知道当RecyclerView已完成第一次放置其物品 可以设置Recy
  • 下载文本文件而不是在浏览器中打开

    我有一个文本文件 当我点击Download它应该下载并将其保存在我的本地下载路径中 我努力了 window open data txt and header Location data txt 但两者都是自行打开文本文件浏览器 我下载的是t
  • string.IsNullOrEmpty(string) 与 string.IsNullOrWhiteSpace(string)

    正在使用string IsNullOrEmpty string 当检查一个字符串时被认为是不好的做法string IsNullOrWhiteSpace string 在 NET 4 0 及更高版本中 最佳实践是选择最合适的一种 Net Fr
  • MATLAB:另存为 Fig 后,plotyy 中的框未对齐

    我使用plotyy 将两个图放在一张图中 f figure Color white ax p1 p2 plotyy xx yy1 xx yy2 ylabel ax 1 Phase FontSize 18 ylabel ax 2 Spectr
  • Java TGA 加载器

    我正在寻找一个小型且免费的 Java 图像加载类或库 理想情况下 结果是 BufferedImage 是的 我已经用谷歌搜索过 但大多数结果都已经过时 或者是相当大的库 其中包含很多我不需要的其他东西 我正在寻找一些小而简单的东西 只能读取
  • 正则表达式从任何字符串获取日期 yyyy-mm-dd

    首先请原谅我对正则表达式不太熟悉 我想要的是一个正则表达式 它可以从任何类型的字符串中提取像 mysql 日期这样的日期 到目前为止我一直在使用这个 0 9 4 0 1 9 1 0 2 0 1 9 1 2 0 9 3 0 1 但是现在我想从
  • Node.js 多个 Sequelize 原始 sql 查询子查询

    标题听起来很复杂 我有一个用户表 每个用户可以有多个兴趣 这些兴趣通过查找表链接到用户 在 PHP 中 我查询了用户表 然后对每个用户进行查询以查找兴趣 如何在 Node js Sequelize 中执行此操作 我怎样才能做出某种承诺 例如