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;
}
}