在使用 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 点?