【问题标题】:Running postgres functions with Sequelize js使用 Sequelize js 运行 postgres 函数
【发布时间】:2020-03-14 09:36:24
【问题描述】:

我正在尝试从 sequelize.js 对我的 postgres 数据库运行一个函数。当我通过 RazorSQL(数据库 IDE)运行该函数时,该函数运行良好,但在节点服务器上从 sequelize.js 运行它时会引发错误。

我对带参数和不带参数的函数都进行了尝试。

节点服务器上的 CoffeeScript

query = "SELECT * FROM order.base_orders(); "

sequelize.query(query, null, {raw: true}).success (rows) =>
  deferred.resolve rows
.error (error) =>
  deferred.reject error

它返回以下错误。

{
"error": {
    "name": "error",
    "length": 216,
    "severity": "ERROR",
    "code": "42883",
    "hint": "No function matches the given name and argument types. You might need to add explicit type casts.",
    "position": "15",
    "file": "parse_func.c",
    "line": "306",
    "routine": "ParseFuncOrColumn",
    "sql": "SELECT * FROM order.base_orders(); "
}

}

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    你做的有点不对。函数只能在列选择区域调用。喜欢

    select function(arguments)
    

    在sequelize中会是这样的

    const query = "SELECT searchProducts('search query');"
    return sequelize.query(query);
    

    请注意,sequelize 是我创建的 Sequelize db 会话,如下所示

    var sequelize = new Sequelize('database', 'username', 'password', {
      host: 'localhost',
      dialect: 'mysql'|'sqlite'|'postgres'|'mssql',
    
      pool: {
        max: 5,
        min: 0,
        idle: 10000
      },
    
      // SQLite only
      storage: 'path/to/database.sqlite'
    });
    

    【讨论】:

      【解决方案2】:

      错误说明:您需要转换数据,例如select foo((?)::int),或者确保您使用正确数量的参数调用它——或者确保它存在,就此而言。

      【讨论】:

        猜你喜欢
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 2016-08-24
        • 1970-01-01
        相关资源
        最近更新 更多