Sequelize findOrCreate insert new row but return object with primary key undefined

node.js, sequelize.js, sql

Solution

Add `autoIncrement: true` to id field, fixing the problem.

Problem

I use Sequelize in one small nodejs project, working with mysql database. With findOrCreate, I can find existing objects and insert new objects, but when the new object was create and return, the primary key was 'undefined'. definition ``` module.exports = function(sequelize, DataTypes) { var Student = sequelize.define('Student', { id : { type : DataTypes.BIGINT, primaryKey : true }, wxid : DataTypes.STRING, client : DataTypes.STRING, nick : DataTypes.STRING, wallet : {type: DataTypes.INTEGER, defaultValue: 0}, mcount : {type: DataTypes.INTEGER, defaultValue: 0}, qcount : {type: DataTypes.INTEGER, defaultValue: 0}, status : {type: DataTypes.INTEGER, defaultValue: 0}, premium_type : {type: DataTypes.INTEGER, defaultValue: 0}, createtime : DataTypes.DATE, lastqtime : DataTypes.DATE, lastmtime : DataTypes.DATE }, { freezeTableName : true, timestamps : false, tableName : 'student_student', associate: function(models) { Student.hasMany(models.Question, {as:'questions', foreignKey: 'student_id'}); } }); return Student; }; ``` findOrCreate ``` db.Student.findOrCreate( { wxid : info.uid }, { client: client_name, createtime: new Date(), lastmtime: new Date() }).success( function(stu, created) { if (!stu) { console.log('Stu[' + info.uid + '] not found.'.red); } else { if (created) { stu.created = true; console.log(stu.values); //// Here, stu.id is 'undefined' } } }); ``` logs: ``` [app-0 (out) 2014-01-10T21:54:32] { id: undefined, [app-0 (out) 2014-01-10T21:54:32] wxid: 'o6ssct7SHGXN1zlyD6vvfk3TMr68', [app-0 (out) 2014-01-10T21:54:32] client: 'wxcs', [app-0 (out) 2014-01-10T21:54:32] nick: undefined, [app-0 (out) 2014-01-10T21:54:32] wallet: 0, [app-0 (out) 2014-01-10T21:54:32] mcount: 0, [app-0 (out) 2014-01-10T21:54:32] qcount: 0, [app-0 (out) 2014-01-10T21:54:32] status: 0, [app-0 (out) 2014-01-10T21:54:32] premium_type: 0, [app-0 (out) 2014-01-10T21:54:32] createtime: Fri Jan 10 2014 21:54:32 GMT+0800 (CST), [app-0 (out) 2014-01-10T21:54:32] lastqtime: undefined, [app-0 (out) 2014-01-10T21:54:32] lastmtime: Fri Jan 10 2014 21:54:32 GMT+0800 (CST) } ``` But when I look into database, I find the row was inserted correctly. How can I findOrCreate with id set? Thanks.

Original source