Search code examples
mysqlnode.jsexpresssequelize.jssequelize-cli

Raw query in express.js route using sequelize


I am very new to using sequelize. I am running a node.js project created using sequelize cli and trying to run a raw query as below within a "put" express route of my application but keep getting and error:

Sequelize.query is not a function

The query that i am trying to run is

UPDATE package_values pk INNER JOIN packages p ON pk.package_id = p.id SET pk.value = true WHERE pk.feature_id = 2 AND (p.based_on = 2 OR pk.package_id = 2)

Any help would be much appreciated as to how I can go about getting this query to work with my project.

Thanks.


Solution

  • You have to call query function on an instance of Sequelize like this :

    var sequelize = new Sequelize("logiqua", "root", "", {
      host: "localhost",
      dialect: "mysql",
      logging: function () { },
      pool: {
        max: 5,
        min: 0,
        idle: 10000
      },
    
    });
    
    // raw query
    
    sequelize.query("UPDATE package_values pk INNER JOIN packages p ON pk.package_id = p.id SET pk.value = true WHERE pk.feature_id = 2 AND (p.based_on = 2 OR pk.package_id = 2)",
     { type: sequelizeLogista.QueryTypes.UPDATE }).then(()=>{
        console.log("done")
     });