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')
,结果相同,计数仍未定义