Node.js 在文件中运行Knex查询比在REPL中运行更长时间

Node.js 在文件中运行Knex查询比在REPL中运行更长时间,node.js,asynchronous,promise,knex.js,Node.js,Asynchronous,Promise,Knex.js,我正在尝试将一些数据植入数据库: // seed.js var Knex = require("knex"); var database = require("./config").database; var knex = Knex.initialize(database); knex("users").insert({ first_name: "John", last_name: "Doe" }).exec(function (err, id) { console.l

我正在尝试将一些数据植入数据库:

// seed.js
var Knex = require("knex");
var database = require("./config").database;
var knex = Knex.initialize(database);

knex("users").insert({
    first_name: "John",
    last_name: "Doe"
}).exec(function (err, id) {
    console.log("Fulfilled", id);
});

// returns [ 1 ]
我的问题是,如果我把它放在一个文件中,并使用
node seed.js
运行它,它会执行
console.log
,然后它似乎要等待更长的时间(大约20秒)才能返回shell提示符。在REPL中执行相同的操作,其中结果是瞬时的


如果我在shell中运行命令提示符,而不是在REPL中执行命令提示符,那么我的代码会等待20秒,这有什么原因吗?

默认情况下,在脚本完全完成之前,node不会返回控制台,而在node REPL中,只要最后一行停止阻塞,node REPL就会返回REPL


在repl中,您实际上在console.log打印之前获得了焦点,而在脚本中,它还必须等待东西关闭,您可以通过在console.log之后添加
process.exit(0)
来加快它的速度。

我觉得我没有正确地将种子植入数据库。使用knex向DB播种的正确方式是什么?我需要把这个放到迁移中吗?谢谢@Calvin。如果我试图为数据库设定种子,可能会错误地使用Knex。有没有合适的方法使用Knex为数据库种子?