在使用 Sequelize 作为 ORM 的 Sails 应用程序中使用原始查询

Posted

技术标签:

【中文标题】在使用 Sequelize 作为 ORM 的 Sails 应用程序中使用原始查询【英文标题】:Using Raw Queries in a Sails App using Sequelize as ORM 【发布时间】:2016-10-08 00:15:49 【问题描述】:

我正在使用 Sequelize 作为 ORM 工具的 Sails 应用程序。应用程序和 Sequelize 之间的初始集成是通过sails-hook-sequelize 插件建立的,该插件可以在here 找到。到目前为止,这种方法效果很好,定义和使用模型没有问题。

但是,当我想将 View 定义为 Sequelize 对象时,我遇到了障碍。 Sequelize(还)没有简单的方法来做到这一点。我发现的解决方法是执行原始查询并使用结果填充表。

现在我来谈谈第二个障碍和实际问题本身。如何在我的sails 应用程序中简单地执行一个sequelize.query?在使用 sequelize 的独立节点应用程序中,我没有问题。但是,这个sails 应用程序已经远离我,以至于我不确定实际从哪个对象调用.query!我正在寻找的是简单的东西,比如

Sequelize.query("SELECT * FROM `Document.MyView`",  type: Sequelize.QueryTypes.SELECT)

遗憾的是上面给了我sequelize.query is not a function

我有一个connections.coffee 文件,其中定义了数据库连接。它被命名为“核心”,但是当我尝试Core.query 我得到Core is undefined

似乎我因为堆叠太多东西而错过了一些简单而基本的东西。

【问题讨论】:

【参考方案1】:

好吧,我的问题来自sails-hook-sequelize 插件。幸运的是我的答案也来自那个插件!

"sequelize" 在这个插件中是一个全局变量。所以不要添加sequelize = require 'sequelize'。 只需按预期使用 sequelize.query 调用原始查询(区分大小写)。

那么您的原始查询应该可以工作了!过去的感谢。

【讨论】:

当我尝试在我的控制器中调用 sequelize.query(myRawQueryString) 时,我碰巧收到错误 ReferenceError: sequelize is not defined。当 sequelize 是一个全局对象时,怎么可能。请帮忙。

以上是关于在使用 Sequelize 作为 ORM 的 Sails 应用程序中使用原始查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sequelize ORM 中插入 PostGIS GEOMETRY 点?

DAO vs ORM - 在 Sequelize.js 的上下文中解释的概念

在 Sequelize 中限制延迟加载的关联

sequelize 学习之路

Node.js的ORM框架sequelize

如何使用 sequelize 和 mysql 创建一对一的关系?