db-migrate / db-migrate/db-migrate-base

Unexpected behaviour of insert method when no callback is passed

Open
#10 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
7
Forks
16
PR merge metrics
No merged PRs in 30d

Description

The following code
```js
exports.up = async function up(db) {
await db.insert('test_table', ['data'], ['test']);
}
```

will fail with an error

```
/home/nikarh/workspace/agilestacks/automation-hub/api/node_modules/bluebird/js/release/async.js:61
fn = function () { throw arg; };
^

TypeError: callback is not a function
at Object.insert [as _super] (/home/nikarh/db-migrate-test/node_modules/db-migrate-base/index.js:366:14)
at Object.insert (/home/nikarh/db-migrate-test/node_modules/db-migrate-pg/index.js:440:26)
at Object.prototype.(anonymous function) (/home/nikarh/db-migrate-test/node_modules/db-migrate-base/class.js:36:24)
at Object.Interface.(anonymous function) [as insert] (/home/nikarh/db-migrate-test/node_modules/db-migrate-shared/util.js:135:41)
at Class.up (/home/nikarh/db-migrate-test/migrations/20170830131445-stack-table-data.js:4:14)
at Class. (/home/nikarh/db-migrate-test/node_modules/db-migrate/lib/skeleton.js:81:41)
at Promise._execute (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/debuggability.js:300:9)
at Promise._resolveFromExecutor (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/promise.js:483:18)
at new Promise (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/promise.js:79:10)
at Class._up (/home/nikarh/db-migrate-test/node_modules/db-migrate/lib/skeleton.js:65:12)
at Class.up (/home/nikarh/db-migrate-test/node_modules/db-migrate/lib/skeleton.js:149:17)
at Migrator.up (/home/nikarh/db-migrate-test/node_modules/db-migrate/lib/migrator.js:112:14)
at /home/nikarh/db-migrate-test/node_modules/db-migrate/lib/migrator.js:178:25
at tryCatcher (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/nikarh/db-migrate-test/node_modules/bluebird/js/release/promise.js:569:18)
```

I can do a PR, I suggest checking the type of a last argument to differentiate between promise-based and callback based API.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/48806101-unexpected-behaviour-of-insert-method-when-no-callback-is-passed?utm_campaign=plugin&utm_content=tracker%2F11792942&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F11792942&utm_medium=issues&utm_source=github).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.