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

You need to sign in or sign up before continuing.
Commit f7aea3b0 by Sascha Depold

added array usage for same operation on multiple objects via chainqueries + adde…

…d compatibility for arbitrary amount of parameters
1 parent d2d38406
Showing with 24 additions and 6 deletions
......@@ -61,19 +61,37 @@ var classMethods = {
return Sequelize.Helper.evaluateTemplate(query, values)
},
chainQueries: function(queries, callback) {
chainQueries: function( ) {
// queries = [{method: object}, {method: object, params: [1,2,3]}, {method: object}]
// example: Sequelize.chainQueries({save: a}, {destroy: b}, callback)
// example: Sequelize.chainQueries({save: [a, b]}, callback)
var queries = [],
callback = null
for(var i = 0; i < arguments.length; i++) {
var arg = arguments[i]
if(typeof arg == 'function') callback = arg
else if(Array.isArray(arg)) arg.forEach(function(o) { queries.push(o) })
else queries.push(arg)
}
var executeQuery = function(index) {
var queryHash = queries[index]
var method = Sequelize.Helper.Array.without(Sequelize.Helper.Hash.keys(queryHash), "params")[0]
var object = queryHash[method]
var iterator = function() {
var queryHash = queries[index],
method = Sequelize.Helper.Array.without(Sequelize.Helper.Hash.keys(queryHash), "params")[0],
object = queryHash[method],
iterator = function() {
if(queries.length > (index + 1)) executeQuery(index + 1)
else if (callback) callback()
}
object[method].apply(object, Sequelize.Helper.Array.join(queryHash.params || [], [iterator]))
if(!Array.isArray(object)) object = [object]
object.forEach(function(o) {
o[method].apply(o, Sequelize.Helper.Array.join(queryHash.params || [], [iterator]))
})
}
if(queries.length > 0) executeQuery(0)
else if (callback) callback()
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!