不要怂,就是干,撸起袖子干!

Commit b66d9ad9 by Mick Hansen

fix(hasOne): make sure it uses the transaction for the select

1 parent a3aa0824
...@@ -67,6 +67,8 @@ module.exports = (function() { ...@@ -67,6 +67,8 @@ module.exports = (function() {
if (!Utils._.isUndefined(params)) { if (!Utils._.isUndefined(params)) {
if (!Utils._.isUndefined(params.attributes)) { if (!Utils._.isUndefined(params.attributes)) {
params = Utils._.extend({where: where}, params) params = Utils._.extend({where: where}, params)
} else if (!params.where) {
params.where = where
} }
} else { } else {
params = {where: where} params = {where: where}
...@@ -83,6 +85,7 @@ module.exports = (function() { ...@@ -83,6 +85,7 @@ module.exports = (function() {
options.transaction = params.transaction; options.transaction = params.transaction;
delete params.transaction; delete params.transaction;
} }
return self.target.find(params, options) return self.target.find(params, options)
} }
......
...@@ -29,17 +29,21 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -29,17 +29,21 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
Group.hasOne(User) Group.hasOne(User)
sequelize.sync({ force: true }).success(function() { sequelize.sync({ force: true }).success(function() {
User.create({ username: 'foo' }).success(function(user) { User.create({ username: 'foo' }).success(function(fakeUser) {
Group.create({ name: 'bar' }).success(function(group) { User.create({ username: 'foo' }).success(function(user) {
sequelize.transaction(function(t) { Group.create({ name: 'bar' }).success(function(group) {
group.setUser(user, { transaction: t }).success(function() { sequelize.transaction(function(t) {
Group.all().success(function(groups) { group.setUser(user, { transaction: t }).success(function() {
groups[0].getUser().success(function(associatedUser) { Group.all().success(function(groups) {
expect(associatedUser).to.be.null groups[0].getUser().success(function(associatedUser) {
Group.all({ transaction: t }).success(function(groups) { expect(associatedUser).to.be.null
groups[0].getUser({ transaction: t }).success(function(associatedUser) { Group.all({ transaction: t }).success(function(groups) {
expect(associatedUser).to.be.not.null groups[0].getUser({ transaction: t }).success(function(associatedUser) {
t.rollback().success(function() { done() }) expect(associatedUser).not.to.be.null
expect(associatedUser.id).to.equal(user.id)
expect(associatedUser.id).not.to.equal(fakeUser.id)
t.rollback().success(function() { done() })
})
}) })
}) })
}) })
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!