Skip to content

Instantly share code, notes, and snippets.

@Jigarsolanki
Created December 9, 2012 09:01
Show Gist options
  • Save Jigarsolanki/4243971 to your computer and use it in GitHub Desktop.
Save Jigarsolanki/4243971 to your computer and use it in GitHub Desktop.
var Sequelize = require('sequelize');
var sequelize = new Sequelize('userpets', 'dbuser', 'dbpassword', {
host: 'localhost', //mysql host name
port: 3306 //default mysql port
});
var User = sequelize.define(
'User',
{
firstName: { type: Sequelize.STRING },
lastName: { type: Sequelize.STRING },
password: { type: Sequelize.STRING },
numberOfPets: { type: Sequelize.INTEGER }
}
);
var Pet = sequelize.define(
'Pet',
{
name: { type: Sequelize.STRING },
type: { type: Sequelize.STRING }
}
);
Pet.belongsTo(User, { as: 'Owner' });
User.hasMany(Pet, { as: 'Pets' });
var chainer = new Sequelize.Utils.QueryChainer;
chainer.add(User.sync());
chainer.add(Pet.sync());
chainer
.run()
.on('success', function () {
addUserAndAPet();
})
.on('error', function (e) {
console.log('Something went wrong!', e)
});
function addUserAndAPet () {
var user, dog, chainer;
user = User.build({
firstName: 'foo',
lastName: 'bar',
password: 'asdfasdf',
numberOfPets: 0
});
dog = Pet.build({
name: 'bono',
type: 'DOG'
});
var chainer = new Sequelize.Utils.QueryChainer;
chainer.add(user.save());
chainer.add(dog.save());
chainer
.run()
.on('success', function () {
assignOwner(user, dog);
})
.on('error', function () {
console.log('Could not add user or pet');
});
}
function assignOwner (user, pet) {
var chainer = new Sequelize.Utils.QueryChainer;
chainer.add(pet.setOwner(user));
chainer.add(user.updateAttributes({
numberOfPets: user.numberOfPets + 1
}));
chainer
.runSerially()
.on('success', function () {
console.log(user.firstName + ' is the owner of ' + pet.name);
})
.on('error', function () {
console.log('Could not assign owner :(');
});
}
exports.User = User;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment