【问题标题】:sequelize group by fn count becomes undefinedsequelize group by fn count 变得未定义
【发布时间】:2018-08-27 07:58:29
【问题描述】:

我的查询如下图:

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,即使它显示在响应中?

【问题讨论】:

  • 我有段时间没用sequelize.js了,不过不应该是Sequelize.col('source'),而不仅仅是'source'Sequelize.fn('COUNT', Sequelize.col('source'))
  • @t.niese 我什至写了Sequelize.fn('COUNT', sequelize.col('source')),结果是一样的,count 仍然未定义

标签: javascript node.js sequelize.js


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    你也可以info.dataValues.count

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      相关资源
      最近更新 更多