orszaczky
orszaczky

Reputation: 15625

Loopback extending User model throws TypeError: Cannot convert undefined or null to object

I'm trying to extend the default User model as follows:

I used the slc loopback:model cli command to create the new 'account' model (extending the built in User model with a firstName and lastName property). It created a common/models/account.json:

{
  "name": "account",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

and a common/models/account.js:

'use strict';

module.exports = function(Account) {

}; 

also added to server/model-config.json:

  "account": {
    "dataSource": "db",
    "public": true
  }

when i try to log in on the new url, instead of a 401, I'm getting a 500 error:

Unhandled error for request POST /api/accounts/login: TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Memory._findAllSkippingIncludes (d:\test-api\node_modules\loopback-datasource-juggler\lib\connectors\memory.js:432:22)
    at Memory.all (d:\test-api\node_modules\loopback-datasource-juggler\lib\connectors\memory.js:506:20)
    at invokeConnectorMethod (d:\test-api\node_modules\loopback-datasource-juggler\lib\dao.js:169:21)
    at d:\test-api\node_modules\loopback-datasource-juggler\lib\dao.js:2131:7
    at doNotify (d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
    at d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:168:23
    at d:\test-api\node_modules\async\dist\async.js:473:16
    at replenish (d:\test-api\node_modules\async\dist\async.js:1006:25)
    at d:\test-api\node_modules\async\dist\async.js:1016:9
    at eachLimit$1 (d:\test-api\node_modules\async\dist\async.js:3196:24)
    at Object.<anonymous> (d:\test-api\node_modules\async\dist\async.js:1046:16)
    at doNotify (d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:157:11)
    at doNotify (d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
    at doNotify (d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)
    at doNotify (d:\test-api\node_modules\loopback-datasource-juggler\lib\observer.js:155:49)

If I change the login api url to /Users/login, it returns a 401 as expected. Any ideas what is wrong?

Upvotes: 0

Views: 509

Answers (1)

orszaczky
orszaczky

Reputation: 15625

Apparently clearing out the db, and first creating a user resolved the issue. If no entities have been entered into the db yet, the issue exists.

Upvotes: 1

Related Questions