Skip to content

Model.getX: Cannot read property 'map' of undefined. #4157

@bretmattingly

Description

@bretmattingly

Sequelize Ver: 3.3.2

Model user has an N:M association with model group. Attempting to use getGroups() results in an error.

Source

router.get('/lazy', function(req, res, next){
    models.user.unscoped().findOne({
        where: {username: 'bomattin'}
    }).then(function(userresult){
        userresult.getGroups().then(function(result){
            res.json(result)
        })
    })
});

Error:

Unhandled rejection TypeError: Cannot read property 'map' of undefined
    at generateJoinQueries (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1052:42)
    at /Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1346:36
    at Array.forEach (native)
    at generateJoinQueries (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1344:27)
    at Object.<anonymous> (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1363:27)
    at Array.forEach (native)
    at Object.QueryGenerator.selectQuery (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1362:23)
    at QueryInterface.select (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/query-interface.js:682:25)
    at null.<anonymous> (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/lib/model.js:1219:32)
    at tryCatcher (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:577:18)
    at Async._drainQueue (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/bomattin/Documents/code/buapi/sequelize-testing/node_modules/sequelize/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:358:17)

The code referenced by the first line of the stack trace is:

attributes = include.attributes.map(function(attr) {

Which suggests that Sequelize is looking for includes and is not finding them. Am I using getX() incorrectly?

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugDEPRECATED: replace with the "bug" issue type

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions