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

Commit 441d013b by Mick Hansen

Support .or()/.and()/[] in findOrCreate

1 parent 01da602b
......@@ -725,29 +725,31 @@ module.exports = (function() {
DAOFactory.prototype.findOrCreate = function (where, defaults, options) {
var self = this
, params = {}
, values = {}
options = Utils._.extend({
transaction: null
}, options || {})
for (var attrname in where) {
params[attrname] = where[attrname]
if (!(where instanceof Utils.or) && !(where instanceof Utils.and) && !Array.isArray(where)) {
for (var attrname in where) {
values[attrname] = where[attrname]
}
}
return new Utils.CustomEventEmitter(function (emitter) {
self.find({
where: params
where: where
}, {
transaction: options.transaction
}).success(function (instance) {
if (instance === null) {
for (var attrname in defaults) {
params[attrname] = defaults[attrname]
values[attrname] = defaults[attrname]
}
self
.create(params, options)
.create(values, options)
.success(function (instance) {
emitter.emit('success', instance, true)
})
......
......@@ -112,6 +112,20 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
done()
})
})
it("supports .or() (only using default values)", function (done) {
this.User.findOrCreate(
Sequelize.or({username: 'Fooobzz'}, {secretValue: 'Yolo'}),
{username: 'Fooobzz', secretValue: 'Yolo'}
).done(function (err, user, created) {
expect(err).not.to.be.ok
expect(user.username).to.equal('Fooobzz')
expect(user.secretValue).to.equal('Yolo')
expect(created).to.be.true
done()
})
})
})
describe('create', function() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!