【问题标题】:sequelize.query() returns same result twicesequelize.query() 两次返回相同的结果
【发布时间】:2016-01-18 20:19:18
【问题描述】:

我在 nodejs 项目中工作,使用 sequelize 连接 mysql 数据库。我还使用sequelize-values 从 Sequelize 实例中获取原始数据。

我已经写了下面的代码

var Sequelize = require('sequelize');
require('sequelize-values')(Sequelize);
var sequelizeObj = new Sequelize('mysql://root:@localhost/database');

sequelizeObj.authenticate().then(function (errors) {
    console.log(errors)
});

sequelizeObj.query("SELECT * FROM `reports` WHERE `id` = 1200").then(function (result) {

    });

现在reports 表只有一条记录id 1200,但是result 给出了相同记录的两个对象,这意味着这两个记录都是相同的 id 1200。

[ [ { id: 1200,
  productivity_id: 9969,
  gross_percentage_points: 100 } ],
[ { id: 1200,
  productivity_id: 9969,
  gross_percentage_points: 100 } ] ]

让我知道我做错了什么?

【问题讨论】:

    标签: json node.js npm sequelize.js


    【解决方案1】:

    第一个对象是结果对象,第二个是元数据对象(包含受影响的行等)——但在 mysql 中,这两个是相等的。

    传递{ type: Sequelize.QueryTypes.SELECT } 作为第二个参数会给你一个结果对象(元数据对象省略

    https://github.com/sequelize/sequelize/wiki/Upgrading-to-2.0#changes-to-raw-query

    【讨论】:

    • const { QueryTypes } = require('sequelize'); var queryString = "从用户中选择 id"; const userList = await Sequelize.query(queryString, { type: QueryTypes.SELECT });
    【解决方案2】:

    试试看:

    sequelizeObj.query("SELECT * FROM `reports` WHERE `id` = 1200", { type: Sequelize.QueryTypes.SELECT }).then(function (result) {
        });
    

    【讨论】:

      【解决方案3】:

      添加{ type: Sequelize.QueryTypes.SELECT }作为第二个参数,也记得先导入Sequelize。

      【讨论】:

        【解决方案4】:

        已解决

        sequelize.query("SELECT ...", { type: Sequelize.SELECT })
        .then(result => {
            if (!result ) {
                res.status(404).send({ message: "Data Not found." });
            }
        
            res.status(200).send(result[0]);
        
        })
        .catch(err => {
            res.status(500).send({ message: err.message });
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-05
          • 1970-01-01
          • 2013-08-30
          • 1970-01-01
          • 1970-01-01
          • 2020-12-04
          • 2020-01-28
          相关资源
          最近更新 更多