* Find a row that matches the query, or build and save the row if none is found
* Find a row that matches the query, or build and save the row if none is found
* The successfull result of the promise will be (instance, created) - Make sure to use .spread()
* The successfull result of the promise will be (instance, created) - Make sure to use .spread()
*
*
* @param {Object} where A hash of search attributes. Note that this method differs from finders, in that the syntax is `{ attr1: 42 }` and NOT `{ where: { attr1: 42}}`. This is subject to change in 2.0
* @param {Object} [options]
* @param {Object} [defaults] Default values to use if creating a new instance
* @param {Object} [options.where] where A hash of search attributes. Note that this method differs from finders, in that the syntax is `{ attr1: 42 }` and NOT `{ where: { attr1: 42}}`. This is subject to change in 2.0
* @param {Object} [options] Options passed to the find and create calls
* @param {Object} [options.defaults] Default values to use if creating a new instance
* @deprecated The syntax is due for change, in order to make `where` more consistent with the rest of the API
* @param {Object} [queryOptions] Options passed to the find and create calls
thrownewError('Missing where attribute in the first parameter passed to findOrCreate. Please note that the API has changed, and is now options (an object with where and defaults keys), queryOptions (transaction etc.)');