dresende / node-orm2

Object Relational Mapping
http://github.com/dresende/node-orm2
MIT License
3.07k stars 379 forks source link

hasOne throw TypeError: Cannot read property 'user_id' of undefined #615

Closed MadebyAe closed 9 years ago

MadebyAe commented 9 years ago

Thanks to @dresende for this amazing nodejs orm.
I am testing Node-ORM2 with the following code, works fine, but throw an error after save.

orm.connect(config.system.db.connection, function(err, db) {
    if (err) {
      throw err;
    }
    var User = db.define('test_user', {
      name : { type: "text", required: true }
    });
    // CREATE THE CHILD
    var Connections = db.define('test_connection', {
      user_id : { type : "number", required : true },
      connection_id : { type : "text", required : true },
      status : { type : "number", required : true }
    }, {
      autoSave : true
    });
    // LINK THEM UP
    Connections.hasOne("user", User, {
      reverse: "connections",
      autoFetch : true,
      key : true
    });
    db.sync(function(){
      User.get(1, function(err, r) {
        console.log(r);
        r.connections = [{connection_id : "foo", status : 1}, {connection_id : "bar", status : 2}];
        r.setConnections();
      });
    });
  });

Error

/Users/Ae/Work/criticalmasser/api/app/node_modules/mysql/lib/protocol/Parser.js:82
        throw err;
              ^
TypeError: Cannot read property 'user_id' of undefined
    at Object.exports.populateConditions (/Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Utilities.js:143:20)
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Associations/One.js:218:12
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:612:12
    at Instance.saveInstanceExtra (/Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:334:19)
    at finish (/Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:215:5)
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:230:9
    at Instance.runAfterSaveActions (/Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:136:3)
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:228:8
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:277:13
    at /Users/Ae/Work/criticalmasser/api/app/node_modules/orm/lib/Instance.js:612:12

Any clue? Thanks :)

MadebyAe commented 9 years ago

I resolve the issue replacing r.setConnections(); with r.save();