使用Sequelizejs检索多行

时间:2014-05-05 13:27:12

标签: node.js sequelize.js node-postgres

我开始学习SequelizeJs然而我遇到一个小问题: 我有一个定义如下的模型:

var ex_table= sequelize.define("ex_table", {
   concept1: Sequelize.STRING(5),
   concept2: Sequelize.STRING(80),
   concept3: Sequelize.STRING,
   weight: Sequelize.INTEGER,
   value: Sequelize.DECIMAL(20,2)
}, {
   tableName: "samble_table"});

从表中检索单行有效,我这样做:

ex_table
  .find({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
  .complete(function (err, result) {
    if (!!err) {
      console.log("An error occurred while creating the table:", err);
    } else {
      console.log(result.values);
    }
  })

这给了我一行数据,这是预期的。 但是,当我尝试检索多行时,如下所示:

ex_table
  .findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
  .complete(function (err, result) {
    if (!!err) {
      console.log("An error occurred while creating the table:", err);
    } else {
      console.log(result.values);
    }
  })

在这里我得到了底层的,任何想法如何获得多行?

1 个答案:

答案 0 :(得分:1)

我发现,至少有两种获取所有行的方法: 正如@ barry-johnson评论的那样,结果是一个数组,所以我们像其他任何一样遍历数组:

ex_table
  .findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})})
  .complete(function (err, result) {
    if (!!err) {
      console.log("An error occurred while creating the table:", err);
    } else {
      for (var i=0; i<result.length; i++) {
           console.log(result[i].values);
           }
    }
  })

或者Sequelize文档的Models部分中有关于原始查询的有趣内容:

  

有时您可能会期待您想要的大量数据集   显示,无需操纵。对于您选择的每一行,Sequelize   创建一个DAO,具有更新,删除,获取关联等功能。   如果您有数千行,这可能需要一些时间。如果你只是   需要原始数据并且不想更新任何东西,你可以这样做   这样可以获得原始数据。

由于我想查看原始数据,这就是我们需要的,所以我们可以像这样得到多行:

ex_table
  .findAll({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})}, {raw:true})
  .complete(function (err, result) {
    if (!!err) {
      console.log("An error occurred while creating the table:", err);
    } else {
           console.log(result);
    }
  })

希望这对其他人也有帮助。