function()

in public/dexie.js [3054:3091]


          function (resolve, reject, idbstore, trans) {
            var hookCtx = { onsuccess: null, onerror: null };
            if (creatingHook !== nop) {
              var effectiveKey =
                key != null
                  ? key
                  : idbstore.keyPath
                  ? getByKeyPath(obj, idbstore.keyPath)
                  : undefined;
              var keyToUse = creatingHook.call(
                hookCtx,
                effectiveKey,
                obj,
                trans
              ); // Allow subscribers to when("creating") to generate the key.
              if (effectiveKey == null && keyToUse != null) {
                if (idbstore.keyPath)
                  setByKeyPath(obj, idbstore.keyPath, keyToUse);
                else key = keyToUse;
              }
            }
            try {
              var req =
                key != null ? idbstore.add(obj, key) : idbstore.add(obj);
              req._hookCtx = hookCtx;
              req.onerror = hookedEventRejectHandler(reject);
              req.onsuccess = hookedEventSuccessHandler(function (result) {
                // TODO: Remove these two lines in next major release (2.0?)
                // It's no good practice to have side effects on provided parameters
                var keyPath = idbstore.keyPath;
                if (keyPath) setByKeyPath(obj, keyPath, result);
                resolve(result);
              });
            } catch (e) {
              if (hookCtx.onerror) hookCtx.onerror(e);
              throw e;
            }
          }