2

我开始学习 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);
    }
  })

在这里我被低估了,任何想法如何获得多行?

4

1 回答 1

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 文档的模型部分的原始查询中有一条有趣的行:

有时您可能会期待一个您只想显示的海量数据集,而无需进行任何操作。对于您选择的每一行,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);
    }
  })

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

于 2014-05-06T01:26:39.543 回答