Javascript 按fn计数对组进行续集变得未定义

Javascript 按fn计数对组进行续集变得未定义,javascript,node.js,sequelize.js,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('s

我的查询如下:

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
name被完美地打印出来。但是
info.count
未定义的
吗,即使它显示在响应中

Sequelize正在尝试将结果映射到
测试
模型,请使用
raw:true
防止

db.test.findAll({
  group: ['source'],
  attributes: ['source', [Sequelize.fn('COUNT', 'source'), 'count']],
  order: [
    [Sequelize.literal('count'), 'DESC']
  ],
  raw: true, // <-- HERE
})
db.test.findAll({
组:[“源”],
属性:['source',[Sequelize.fn('COUNT','source'),'COUNT']],
订单:[
[Sequelize.literal('count'),'DESC']
],

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

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

你也可以做
info.dataValues.count

我已经有一段时间没有使用sequelize.js了,但它不应该是
sequelize.col('source')
,而不仅仅是
'source'
sequelize.fn('count',sequelize.col('source'))
?@t.niese我甚至还写了
sequelize.fn('count',sequelize.col('source')
,结果相同,
计数仍未定义