s.replace不是sequelize.fn' AVG'

时间:2016-05-27 13:45:46

标签: javascript node.js sequelize.js

以下查询有效,但代码没有:

/*
SELECT "UserRole", Avg(rating)  FROM "Reviews" AS "Review" GROUP BY "UserRole";
 UserRole |        avg         
----------+--------------------
 COACH | 2.0000000000000000
 PLAYER | 3.0000000000000000
(2 rows)

*/
router.get("/as",function(request,response){
  model.Review.find({
      where: { UserId: 1},
      attributes: [ "UserRole", [ sequelize.fn('AVG', sequelize.col('rating')) ]],  
      group: ["UserRole"],


    }).then(function(ratings){

    })

})

以下是我遇到的错误:

Unhandled rejection TypeError: s.replace is not a function
    at Object.module.exports.removeTicks (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/utils.js:376:14)
    at Object.module.exports.addTicks (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/utils.js:372:29)
    at Object.QueryGenerator.quoteIdentifier (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/dialects/postgres/query-generator.js:844:20)
    at Object.QueryGenerator.quoteIdentifiers (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/dialects/abstract/query-generator.js:937:19)
    at /media/mydata/projects/jobcuejs/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1080:82
    at Array.map (native)
    at Object.QueryGenerator.selectQuery (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1062:55)
    at QueryInterface.select (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/query-interface.js:661:25)
    at null.<anonymous> (/media/mydata/projects/jobcuejs/node_modules/sequelize/lib/model.js:1413:32)
    at tryCatcher (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/promise.js:503:31)
    at Promise._settlePromise (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/promise.js:560:18)
    at Promise._settlePromise0 (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/promise.js:605:10)
    at Promise._settlePromises (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/promise.js:684:18)
    at Async._drainQueue (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/async.js:126:16)
    at Async._drainQueues (/media/mydata/projects/jobcuejs/node_modules/bluebird/js/release/async.js:136:10)

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情

[ sequelize.fn('AVG', sequelize.col('rating')), "avg" ]