通过fn计数分组未定义

时间:2018-08-27 07:58:30

标签: javascript node.js sequelize.js

我的查询如下所示:

db.test.findAll({
  group: ['source'],
  attributes: ['source', [Sequelize.fn('COUNT', 'source'), 'count']],
  order: [
    [Sequelize.literal('count'), 'DESC']
  ]
}).then((sources) => {
  sources.forEach((info) => {
    console.log('sorce name :' + info.source + " count : " + info.count);
  })
}).catch((err) => {
  console.log(err);
})

因此,这里发生的情况是info.source名称被完美打印。但是info.countundefined,即使它在响应中显示了吗?

2 个答案:

答案 0 :(得分:2)

Sequelize尝试将结果映射到test模型,使用raw: true来防止这种情况...

db.test.findAll({
  group: ['source'],
  attributes: ['source', [Sequelize.fn('COUNT', 'source'), 'count']],
  order: [
    [Sequelize.literal('count'), 'DESC']
  ],
  raw: true, // <-- HERE
})

答案 1 :(得分:0)

我自己遇到了这个问题。不必使用raw: true,您可以使用instance.get('attribute'),因此在您的情况下

sources.forEach((info) => {
  console.log('source name :' + info.source + " count : " + info.get('count');
})

您也可以执行info.dataValues.count